通常,我们调试一个芯片的时候,往往是编写程序---下载---更改---下载。。。这种方法固然好,但是像我这样的懒人不大喜欢,我喜欢找一种一劳永逸的方法来解决。于是,开始动手写了这个I am Master!顾名思义,就是将Nucleo作为一个主机,与我们需要使用的软件进行通信。可能这样说你不是很理解,没关系,下面还会一 一介绍的。
电脑作为控制端,通过串口与我们的Nucleo进行通信,而Nucleo根据电脑发送的字符,解析,并且产生一定的时序,与我们需要使用的芯片进行通信。
比如,电脑端通过串口向Nucleo发送 input 0 1 2,代表Nucleo需要将 0 1 2这三个引脚设置成为输入状态. 在我的程序中,将Nucleo左边的A0~A5作为IO部分,分别对应编号0-5。可以用于执行比较简单的任务。
注意:为了保证电脑端有一个良好的人机界面,大家务必使用能够满足linux终端要求的串口软件。比如puTTy,smartty。或者是超级终端。像一般的串口软件无法完成这个项目的要求。因为他们不能够改变字体的颜色。这里推荐大家使用smarTTY,如果使用puTTY的话需要更改我上传的程序。因为当我们按下Enter的时候,puTTY发送的是'',而smarTTY发送的是''。在附件中有最新的smarTTY的安装版软件。
如果在使用smarTTY的时候,发现换行符不能正确显示,请进行这样的设置:
版本更新介绍:
V1.0.0支持函数:
- input
- output
- set
- reset
- toggle
- read
- spi
- spi-config
- man
V1.0.1新增函数:
- servo
- i2c-online
- i2c-write
- i2c-read
V1.0.2更新说明:
- 将i2c-online更改为i2c-scan
- i2c-read命令新增参数-a 可以用于在读取中指定一个寄存器地址。例如:从设备地址为0x90,寄存器地址为0x00的设备处读取1个字节可以使用 i2c-read -d 0x90 -a 0x00 -r 1 。需要注意的是:如果寄存器地址多于1个字节,只能先使用先写地址,在读的方式。例如:从设备地址为0x90,寄存器地址为0x0100的设备处读取1个字节只能分成两部:(1) i2c-write -d 0x90 0x01 0x00 (2) i2c-read -d 0x90 -r 1
- 新增函数clear,用于清屏。
V1.0.3更新说明:
- 为了在STM32系列中的可移植性,进行了一些并无实际卵用的更新。新建了config.h头文件。STM32F3系列的其余Nucleo包马上就会放出。
- 修复了在不输入任何字符,仅按下回车的情况下,提示Unknow command的bug。
V1.0.4更新说明:
- 上电之后SPI的模式被修改为模式0,时钟为4Mhz。
- SPI读取(由-r参数指定的)数据被缓冲,使相临两次读取的时间由原先的100us缩减为7us。
- 串口数据改为中断输入方式,使用RingBuffer(1KB)进行缓存。
- 支持发送命令文件。即将所有要发送的命令写入文件,每一条命令占用一行,通过smarTTY直接发送文件。具体的细节请参考本帖第6楼。
v2.0.0(重要更新)。
- 优化代码结构。如果仅仅为了使用,而不是阅读代码的话,那么这次更新并无卵用。
- 不再使用占用大量CPU时间的printf,改为termiosXXX函数。
- 从gcc库中移植getopt。为命令行解释提供了统一的方法。
- shell函数解析的时候,将使用 "" 引起的字符作为一个参数。不管""内的字符是不是含有空格。例如:输入spi [ "Hello world" 0x24 0xff ] ,经过shell解析传给spi的命令参数为:argv[0]==spi , argv[1] =[ , argv[2] ="Hello world" ,argv[3]= 0x24, argv[4]=0xff, argv[5] = ] 。注意:"Hello world"是一个参数,不同于windows和linux,这里为参数保留了引号。
- 修改spi-config,如果spi-config未提供任何参数,将显示出现在spi的模式。包括模式,时钟频率,Msb/Lsb First。如果提供参数,将对参数进行解析。
:
吐槽,意见,或者建议请联系(PS有没有E语好的大神,帮忙翻译一下man的说明部分):
qianfanguijin@163.com
qianfanguijin@gmail.com
版权声明:
本软件仅供与学习交流之用,未经允许,不得用于商业用途。
I am master v2.0.rar
(2.3 MB, 下载次数: 8)
|