本帖最后由 jinglixixi 于 2022-5-29 23:47 编辑
自CH32V103开始,就提供了基于U盘文件的读写功能,这也是我十分喜欢使用沁恒产品的一个主要原因之一。
对于CH32V307来讲,自然也是具备这一特色的,但唯一感到不便的是以前是直接提供可供U盘插接的接口,而这次其接口已均采用TYPE_C接口,故一时间就无法进行测试了。
为了进行接口转换,先使用了TYPE_C接口的数据线及图1所示的USB分线器来进行转接,结果发现并不成功,经分析是因为,在分线器内部其连线关系相当于是一种母线结构,属于并行的关系,故不能形成设备间的接收与发送关系。
图1 USB分线器
然后又按图2所示,利用手头的转接器件构建了一个转接线路,经程序的下载测试终于得到了图3所示的测试结果。
图2 转接线路
图3 测试结果
既然有了正确的测试结果,那最好有一个更直接的转接器件,后来还真在网上寻到了一个不足3块钱的转换器,其连接方式如图4所示。
别说尽管其十分便宜,但效果却很好,且能与手机相连来扩展存储容量。 图4 连接方式
通过对例程的分析可知,其功能是:
在U盘可以识别的情况下,会对C51目录下的NEWFILE.C加以测试。若该文件存在,则对其进行读写测试。
否则,则是在根目录下创建一个命名为"NEWFILE.TXT"的文件,然后向其写入10次相同的文本信息,其内容如图5所示。
图5 文本内容
除此之外,它还对此文件的属性进行修改处理,见图6所示。
图6 文件属性
若在C51的目录下添加一个名为“NEWFILE.C”的文件,则其运行结果如图7所示。
可以看出它在执行时,不但向文件追加了10条相同的信息,而且还提供了一个读取的测试,只是其读取的内容并未显示出来。
图7 测试结果
那为啥没有读取的显示结果呢?
于是将该文件的前100个字符改为10组0~9的字符,见图7所示。
图8 修改显示内容
然后再次进行测试,依然无果。再次分析程序才发现,程序为了进行数据追加是将数据指针移动到了文件的末尾,完成写入操作后,操作指针自然也处在文件的末尾,这样进行读取自然是一无所获。
在将操作指针移动到文件起始位置后,再进行读取则其结果如图9所示。
图9 测试结果
这说明对U盘的文件读写均是成功的,只是在例程中出现了一点小疏漏而已。
以此为基础,后面我们就可以实现自己的各种应用了!