发新帖本帖赏金 40.00元(功能说明)我要提问
返回列表

[其他芯片] 知识变现之CH376实现U盘读写方案

[复制链接]
1724|3
手机看帖
扫描二维码
随时随地手机跟帖
单片小菜|  楼主 | 2022-5-25 17:24 | 显示全部楼层 |阅读模式
本帖最后由 单片小菜 于 2022-5-25 17:26 编辑

#申请原创# @21小跑堂


引:


      项目需求:将主机数据通过串口写到外部U盘中,主机只有一个串口可以使用,无法扩展别的接口。
      项目周期:一周完成。
      项目预算:20元以内

一、方案确定:

      针对这个需求以及时间,想到了沁恒。或许有类似的芯片可以使用,寻求技术支持之后,推荐使用CH376来实现,申请了开发板、三个样片,第二天就拿到手。配合需要的东西。

93356628ded2902c51.png

二、开发板验证

      拿到开发板之后,先把几个关键的资料搞到手,最好的方式就是官网直接下载,绝对是一手资料,原理图、PCB、丝印图、上位机验证软件、芯片手册、开发板说明。

      开发板原理图:

95701628debbe31ffb.png

      丝印图:

23214628debf43435a.png

      工具包:

64282628dec129f55d.png

三、动手开做

      使用上位机软件进行仿真串口,直接写到U盘中数据。跳线帽要选择正确,按照手册上的指引进行选择。

      打开上位机软件

77356628dedbd2bd6c.png

      选择串口按步骤进行选择,查看COM口号,打开串口,然后获取版本号,第一部分很重要,由于CH376有多种模式,串口方式、SPI方式、U盘方式、SD卡方式等等。在这里需要设置模式6,属于外接U盘方式。

44761628dee4b2cc77.png

      发送指令之后,我们会看见开发板的红灯亮了。

38270628deee59a014.png

      磁盘初始化部分,检测磁盘是否就绪,发送检测磁盘就绪指令,在信息栏返回如下指令:

16:55:19        磁盘就绪:0x14 磁盘信息: SanDisk Cruzer Blade 1.00


      证明磁盘状态良好。我们对文件操作。这里有创建文件,打开文件,设置偏移写数据等等;

99159628def6456c29.png

      下面都有很好的说明性的文字。我们试着创建\AABBCC.TXT文件,然后写入123456.

49794628defd1df96e.png

      可以看到下面写入成功了,只要返回值为0x14,证明成功了。

16:55:19        磁盘就绪:0x14 磁盘信息: SanDisk Cruzer Blade 1.00
16:58:23        创建文件名: \AABBCC.TXT 返回值:0x14
16:58:27        请输入文件名 8+3格式 字母必须大写
16:58:33        打开文件名: \AABBCC.TXT 返回值:0x14
16:58:41        写文件长度:6 返回值:0x14


      我们将U盘接到电脑中,查看是否真的建立文件,并写入了内容。

17201628df031491a7.png

      打开AABBCC.TXT文件

70183628df0477d8a2.png

      实验成功。

四、抓包

      由于项目紧急,上位机实现的功能,正是项目所需要的,可以用最简单的方式进行。安装虚拟串口软件(VSPD)。模拟串口发出的数据。

47925628df1b63833a.png

      设置为COM4和COM5端口,然后打开软件和串口调试助手

23808628df2270d109.png

      波特率设置一样9600,8,N,1

      我们逐条进行解析操作,初始化部分是必不可少的。

57 AB 15 06 

      创建文件
57 AB 2F 5C 41 41 42 42 43 43 2E 54 58 54 00 57 AB 34 

      打开文件

57 AB 2F 5C 41 41 42 42 43 43 2E 54 58 54 00 57 AB 32 

      关闭文件

57 AB 36 01


五、进行单片机串口代码编写

      这里以沁恒的CH32F103C8T6为例进行书写:

      串口初始化

static void NVIC_Configuration(void)
{
      NVIC_InitTypeDef NVIC_InitStructure;
               
      NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
      NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
      NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
      NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
      NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
      NVIC_Init(&NVIC_InitStructure);
}
void USART2_Config(void)
{
                GPIO_InitTypeDef GPIO_InitStructure;
                USART_InitTypeDef USART_InitStructure;

                RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
               
                RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);

                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
                GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
                GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
                GPIO_Init(GPIOA, &GPIO_InitStructure);

                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
                GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
                GPIO_Init(GPIOA, &GPIO_InitStructure);
               
                USART_InitStructure.USART_BaudRate = 9600;
                USART_InitStructure.USART_WordLength = USART_WordLength_8b;
                USART_InitStructure.USART_StopBits = USART_StopBits_1;
                USART_InitStructure.USART_Parity = USART_Parity_No ;
                USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
                USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
                USART_Init(USART2, &USART_InitStructure);
               
                NVIC_Configuration();
               
                USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);       
               
                USART_Cmd(USART2, ENABLE);               

}


      数据发送代码编写,可以参考开发包里面的51例程进行改写。这里就不赘述了。

六、打板、加急、焊接、验证

      按照提供的封装、原理图、PCB图进行CH376的PCBA制作,加急,项目完结,总共用了4天时间。包括调试,提前完成任务。




使用特权

评论回复

打赏榜单

21小跑堂 打赏了 40.00 元 2022-06-02
理由:恭喜通过原创文章审核!请多多加油哦!

评论
21小跑堂 2022-6-2 10:53 回复TA
通过串口实现U盘读写,过程清晰详细,具有实际意义。 
weifeng90| | 2022-6-2 18:46 | 显示全部楼层
不错,谢谢分享。

使用特权

评论回复
sainuo598| | 2022-6-7 11:53 | 显示全部楼层
不错,谢谢分享

使用特权

评论回复
发新帖 本帖赏金 40.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则