CH376串口模式操作U盘详解(读写txt、csv文件、串口调试和stm32程序)

文中介绍的可能有一些繁琐,因为也是想解释的更清楚一些,但是小弟希望大家能认真看完。

市面上关于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)

有疑问的地方欢迎大家指正,评论或私聊都可以

能否看在小弟如此细致分享的份上,给个关注吧,各位铁铁!!

制作不易,感谢大家支持,感谢!!!!!!

  ————–一个正在努力的人

物联沃分享整理
物联沃-IOTWORD物联网 » CH376串口模式操作U盘详解(读写txt、csv文件、串口调试和stm32程序)

发表评论