CH376的串口模式操作U盘(读、写、txt文件、csv文件、串口调试讲解、stm32程序)
使用ch376完成读、写TXT文件、CSV文件
文中介绍的可能有一些繁琐,因为也是想解释的更清楚一些,但是小弟希望大家能认真看完。
市面上关于ch376串口的知识介绍不多,可以说基本没有,博主当时也废了一些力气,在此希望给大家一些帮助,认真看完绝对会使用ch376读、写、txt、csv文件。 (在此提一嘴,ch375这款芯片确实也能使用串口读写U盘,但是375的数据传输不是常规的8位数据传输,也就是说我们调起来会非常的费劲,376是常规的8位数据传输,建议大家使用ch376)
ch376使用串口通讯时,波特率为9600、数据以十六进制发送。
一、读txt文件
发送的命令 | 命令用途 | 正常返回数据 |
57 AB 06 EE | 测试通讯接口和工作状态(EE为测试数据,返回按位取反,也就是11) | 11 |
57 AB 15 06 | 选择U盘模式 | 51 15 |
57 AB 30 | 检查磁盘是否连接 | 14 |
57 AB 31 | 初始化磁盘 | 14 |
57 AB 2F 31 2E 54 58 54 00 | 设置将要操作的文件(31 2E 54 58 54为文件名1.TXT,以00结尾) | 不返回 |
57 AB 32 | 打开文件 | 14 |
57 AB 3A 04 00 | 设置要读取的字节数(04 00为要读取四个字节数据,采用大端对齐。如果要读取1个字节数据,则发送01 00) | 1D |
57 AB 27 | 读取数据 | 返回 字节数+1.TXT中的数据 |
57 AB 3B | 继续字节读指令 | 14 |
大家千万不要把最后一条指令57 AB 3B遗忘了,这时候有人问:“我只写一次,为什么还要发送继续字节读呢?”,,,官方数据手册中规定(虽然我试过不加也好使,但咱们还是做个乖宝宝,跟着手册来,哈哈哈)
现象:
所创建的文件及内容 使用ch376读取返回的数据
二、写txt文件
发送的命令 | 命令用途 | 正常返回数据 |
57 AB 06 EE | 测试通讯接口和工作状态(EE为测试数据,返回按位取反,也就是11) | 11 |
57 AB 15 06 | 选择U盘模式 | 51 15 |
57 AB 30 | 检查磁盘是否连接 | 14 |
57 AB 31 | 初始化磁盘 | 14 |
57 AB 2F 32 2E 54 58 54 00 | 设置将要操作的文件(32 2E 54 58 54为文件名2.TXT,以00结尾) | 不返回 |
57 AB 34 | 打开文件 | 14 |
57 AB 3C 02 00 | 设置要写入的字节数(02 00为要读取四个字节数据,采用大端对齐。如果要写入1个字节数据,则发送01 00) | 1E |
57 AB 2D 31 32 | 写入数据 | 所写入的字节数(本例子中是02) |
57 AB 3D | 继续字节写指令 | 14 |
57 AB 36 31 | 关闭文件并保存 | 14 |
大家千万千万不要把最后两条指令57 AB 3D 57 AB 36 31遗忘了,这个和读的时候还不太一样,读的时候不加好使,写的时候不加这两条指令,数据不会保存。数据只在内存中,而不被写入到文件中
现象:
三、创建CSV文件并写入数据 (U盘中事先没有这个文件)
在说指令之前,首先说一些要写表格文件需要注意的问题,我们写表格总要换行换列写吧,不可能在一个单元格中存放所有的数据吧,所以我们需要注意换行换列问题。
换行:0X0D 0X0A 换列:0X2C 0X20
命令介绍:
发送的命令 | 命令用途 | 正常返回数据 |
57 AB 06 EE | 测试通讯接口和工作状态(EE为测试数据,返回按位取反,也就是11) | 11 |
57 AB 15 06 | 选择U盘模式 | 51 15 |
57 AB 30 | 检查磁盘是否连接 | 14 |
57 AB 31 | 初始化磁盘 | 14 |
57 AB 2F 31 2E 43 53 56 00 | 设置将要操作的文件(31 2E 43 53 56为文件名1.CSV,以00结尾) | 不返回 |
57 AB 34 | 打开文件 | 14 |
57 AB 3C 04 00 | 设置要写入的字节数(04 00为要读取四个字节数据,采用大端对齐。如果要写入1个字节数据,则发送01 00) | 1E |
57 AB 2D 31 2C 20 32 | 写入数据(这里注意,我们上一条指令设置本次写入的字节数为04,但由于换列操作2C 20占了两个字节,所以说实际传输的数据为两个字节,分别为31 32) | 所写入的字节数(本例子中是04) |
57 AB 3D | 继续字节写指令 | 14 |
57 AB 36 31 | 关闭文件并保存 | 14 |
四、追加CSV文件中的数据 (U盘中事先就有这个文件,在最后追加数据)
除28行、29行、31行外追加数据与上面介绍的三 没有什么区别,下面就着重说一些28 29 31
28:由于我们实在原有文件中追加数据,所以只需打开原有文件就行,所以是命令 57 AB 32 而不是创建命令 57 AB 34
29:因为我们追加数据肯定是在最后追加,所以需要将指针调整至数据尾端,57 AB 39 FFFFFFFF
其中FFFFFFFF就是代表末尾的意思,也就是最后一个数据所在的单元格
31:为什么传输的数据要先加一个0D 0A? 因为我们调整完指针之后,指向最后一个单元格,所以需要先来一个换行指令0D 0A,使指针指向新的单元格。
没加0D 0A直接补加数据 3、4 加了0D 0A后补加数据 3、4
五、完整工程链接
该工程是基于STM32单片机开发的,使用USART2与CH376进行通讯,将数组中的数据写入到CSV文件中(也兼容TXT文件,只需稍作修改即可,有问题可联系博主。
基于STM32+CH376串口模式读写U盘-淘宝网 (taobao.com)
有疑问的地方欢迎大家指正,评论或私聊都可以
能否看在小弟如此细致分享的份上,给个关注吧,各位铁铁!!
制作不易,感谢大家支持,感谢!!!!!!
--------------一个正在努力的人
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)