今天已经是2019年的5月中旬了,马上要毕业论文检查了,但是我一个字还没有写。本来计划今天写的,无奈无从下手呀,突然想到今天的工作记录还没有写,果断放弃了毕业论文,写论文是不可能写的,,,,(0*0)
今天来总结下我一天内完成的工作成果。
- STM32-SPI 外置内存的调试(W25Q128)参考的正点原子例程
- STM32-I2C 外置内存的调试(AT24C128)
- STM32关键参数的超级串口终端(可以进行关键参数的快速配置)-阿正原创
W25Q128遇到的问题:无法读取FlashID
首先,刚开始调试SPI的时候就遇到了致命的问题,我调试了接近一晚上,但是连Flash的ID都读不出来,一度让我很烦躁,一行代码一行代码的调试,也没有发现异常,毕竟Flash的ID读取也就是几个函数而已,底层的SPI其实是不需要配置的,为了解决这个问题,我尝试了很多办法,代码几乎肯定是没问题的,我把W25Q128换成了W25Q16,依旧无法读取出来ID,此时我又把主机上的Flash换到了一块能正常运行的F4单片机上,此时是可以读出ID的,所以排除了硬件问题,但是代码是否有问题依旧无法确认,一直到下午,把办公室的老大哥,发现了原理图上面的引脚MOSI与MISO的引脚画反了!!!最终我把引脚飞线交叉以后,问题解决了,哎呀,下午的时候和我的恩同事一起去吃了土豆粉。
STM32-I2C 外置内存的调试(AT24C128)
调试代码总是不顺利的,这款IC也出现了问题,初始化无法校验成功,后来发现是我的红底昂一有问题,再加上论坛生的一些资料,帮助我解决了问题,成功实现flash读写。
STM32超级串口的设计
首先我手头的主板为STM32F103R8t6
三个串口已经全部使用了,
串口1用来做调试
串口2用来与NB模组通讯
串口3用来与485设备通讯
最后我次用了串口1作为超级串口终端。超级串口的用途:
- 批量配置设备主要参数,例如:NB模组IP地址、MQTT服务器域名、设备ID、问询设备状态等。
- 通过串口助手快速批量设置设备
- 通过PC端软件快速便捷设置(QT上位机开发)
超级串口的实现方法:
- 串口中断的使用,包括接收中断与空闲中断(用来接收长帧数据)
- 自定义字符处理函数(参考网上教程)
- 原创类似AT指令的串口配置命令:
指令配置表:
指令 | 功能 |
---|---|
CITC+IP[192.168.1.120] | 更改服务器IP地址 |
CITC+PORT[1883] | 更改服务器端口号 |
CITC+ID[TEST_NB] | 更改设备ID |
CITC+USER[admin] | 更改MQTT用户名 |
CITC+PASSWORD[public] | 更改MQTT密码 |
CITC+TOPIC[/device/NB/102365] | 更改发布消息Topic |
地址对应表:
地址 | 功能 | 长度 |
---|---|---|
0-50 | 存储开机打印信息与程序版本号等 | 50 |
50-70 | IP地址 | 20 |
70-80 | PORT端口 | 10 |
80-100 | ID设备ID | 20 |
100-120 | USER用户名 | 20 |
120-140 | PASSWORD密码 | 20 |
150-200 | TOPIC消息主题 | 50 |
代码简单记录:
截取字符函数:
|
|
超级串口终端代码:
串口中断部分:
|
|
接收数据处理部分:
|
|
主机开机初始化部分(从内存中读取信息)
|
|
晚安世界,希望以后自己更加努力,好好学习,努力工作。
学到更多的东西、学到更多的知识。