# WCH_Per(CH45x CH37x CH42x CH43xCH9445) **Repository Path**: maji19971221/wch_-per ## Basic Information - **Project Name**: WCH_Per(CH45x CH37x CH42x CH43xCH9445) - **Description**: WCH单片机外围芯片的一些个人总结例程。使用的MCU是较为通用的STM32F103ZET6(标准库)和STM32F429IGT6(HAL库)。WCH官方的代码都是51单片机的代码。此代码仅个人根据官方的代码移植或操作。 - **Primary Language**: C - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 49 - **Forks**: 22 - **Created**: 2021-06-26 - **Last Updated**: 2025-06-03 ## Categories & Tags **Categories**: chips **Tags**: None ## README # WCH_Per ### 介绍 WCH单片机外围芯片的一些个人总结例程。使用的MCU是较为通用的STM32F103ZET6(标准库)和STM32F429IGT6(HAL库)。WCH官方的代码都是51单片机的代码。此代码仅个人根据官方的代码移植或操作。 如果对这些芯片不是很了解,可以看我的Blog:https://www.cnblogs.com/mj19971221/ 里面有一些相关芯片的介绍。 内容介绍: #### STM32F103文件夹(标准库): 1. 最简单的标准库Demo。 2. STM32F103使用GPIO模拟SPI时序控制CH432,实现SPI转串口。 3. STM32F103硬件SPI2控制CH432,实现SPI转串口。 4. STM32F103硬件FSMC控制CH438,实现并口转串口。 5. STM32F103使用GPIO模拟并口时序控制CH438,实现S并口转串口。 6. STM32F103使用GPIO模拟IIC时序控制CH450。 7. STM32F103使用GPIO模拟IIC时序控制CH452。 8. STM32F103使用GPIO模拟IIC时序控制CH454。 9. STM32F103使用GPIO模拟IIC时序控制CH455。 10. STM32F103使用GPIO模拟IIC时序控制CH456。 11. STM32F103硬件SPI2控制CH376实现U盘里面文件与文件夹的创建;修改文件/文件夹日期;文件数据的输入。 12. STM32F103使用模拟并口去控制CH375作为USB_HOST来控制CH9326(USB转串口),更改波特率,并传输数据。 13. STM32F103使用硬件SPI控制CH374U作为主机识别北通的一个2.4G的游戏手柄,并获取游戏手柄传输的键值。 14. STM32F103使用模拟并口去控制CH375作为USB_HOST来控制CH9326(USB转串口),更改波特率,并传输数据。(弄错了,后面删掉) 15. STM32F103使用模拟并口去控制CH375作为USB_Device来实现HID键盘的枚举,键值的上传等。 16. STM32F103使用硬件SPI实现控制CH9434串口数据的收发,以及GPIO的控制。 17. STM32F103使用硬件SPI控制CH374U作为主机识别CH340G,并把串口设置为115200bps,8数据位,1停止位,无奇偶校验。实现USB控制串口的发送。 18. STM32F103使用FSMC控制CH438实现8串口的数据收发。 19. STM32F103使用GPIO模拟IIC时序控制CH453。 20. STM32F103硬件SPI2控制CH376实现读取U盘容量大小与U盘剩余容量大小。 21. 和13类似。 22. STM32F103使用模拟并口去实现CH375作为一个CDC设备(全速设备)与PC通讯,实现USB数据的交互。 23. STM32F103使用模拟IIC去实现CH9445F模拟开关的切换,实现USB3.0通道的切换。 24. STM32F103使用硬件SPI控制CH376S去实现U盘的IAP升级,从而实现STM32F103,上电检测U盘,读取U盘BIN文件,实现FLASH代码的更新。 25. STM32F103使用硬件SPI控制CH9434A实现SPI扩4串口功能,GPIO控制功能,RS485以及流控。 #### STM32F429文件夹(HAL库): 1. 最简单的HAL库Demo。 2. STM32F429硬件SPI5控制CH432,实现SPI转串口。 3. STM32F429使用GPIO模拟IIC时序控制CH455。 4. STM32F429硬件SPI5控制CH376实现枚举U盘里面文件名、大小、时间。 5. STM32F429硬件SPI5控制CH376实现U盘里面文件与文件夹的创建;修改文件/文件夹日期;文件数据的输入。 6. STM32F429硬件SPI5控制CH376实现U盘里面文件与文件夹的创建;修改文件/文件夹日期;文件数据的输入。详细注释。 7. STM32F429硬件SPI5控制CH376实现USBHost,键盘鼠标插入能正确识别到描述符,正确获取到键盘、鼠标的键值。以及对键盘LOCK的回应。 8. STM32F429硬件SPI5控制CH374U实现键盘/鼠标同时插入,并获取其描述符,以及键盘/鼠标得键值。 9. STM32F429硬件SPI5控制CH432,实现SPI转串口。此例程对于Num.2例程,解决了串口接收中断Fifo触发的问题。 10. STM32F429硬件SPI5控制CH378作为CH372设备上传数据。 11. STM32F429硬件SPI5控制CH378实现U盘的文件创建,读写。 #### STM32F407文件夹: 1. 最简单的HAL库Demo。 2. STM32F407使用GPIO模拟SPI控制CH432,实现SPI转串口。 ### 更新日志: #### 2022/12/29 1. STM32F103使用硬件SPI控制CH9434A实现SPI扩4串口功能,GPIO控制功能,RS485以及流控。相关教学文档清参考个人blog:https://www.cnblogs.com/mj19971221/p/17012856.html #### 2022/12/26 1. STM32F103使用模拟并口去实现CH375作为一个CDC设备(全速设备)与PC通讯,实现USB数据的交互。 2. STM32F103使用模拟IIC去实现CH9445F模拟开关的切换,实现USB3.0通道的切换。 3. STM32F103使用硬件SPI去实现U盘的IAP升级,从而实现STM32F103,上电检测U盘,读取U盘BIN文件,实现FLASH代码的更新。 #### 2022/4/22 1. STM32F103使用GPIO模拟IIC时序控制CH453。 2. STM32F103硬件SPI2控制CH376实现读取U盘容量大小与U盘剩余容量大小。 3. STM32F407使用GPIO模拟SPI控制CH432,实现SPI转串口。 #### 2022/1/24 1. 更新了STM32F103使用硬件SPI控制CH374U作为主机识别CH340G,并把串口设置为115200bps,8数据位,1停止位,无奇偶校验。实现USB控制串口的发送。 2. 更新了STM32F103使用FSMC控制CH438实现8串口的数据收发。 #### 2022/1/4 1. 更新了STM32F103使用模拟并口去控制CH375作为USB_Device来实现HID键盘的枚举,键值的上传等。 2. 更新了STM32F103使用硬件SPI实现控制CH9434串口数据的收发,以及GPIO的控制。 3. 更新了STM32F429硬件SPI5控制CH378作为CH372设备上传数据。 4. 更新了STM32F429硬件SPI5控制CH378实现U盘的文件创建,读写。 #### 2021/9/16 1. 更新了STM32F103使用硬件SPI控制CH374U作为主机识别北通的一个2.4G的游戏手柄,并获取游戏手柄传输的键值。 #### 2021/7/31 1. 更新了STM32F103使用模拟并口去控制CH375作为USB_HOST来控制CH9326(USB转串口),更改波特率,并传输数据。流程CH375作为USB_HOST模拟电脑主机,拼SET_UP包然后接收Device上传的描述符。 #### 2021/7/7 1. 更新了STM32F429使用硬件SPI控制CH374Host的例子(HID键鼠)。 2. 更新了STM32F429使用硬件PI控制CH432的例子。主要修改内容:将串口接收中断那边的程序进行了修改。完善了串口接收读取时的Bug(读取数据长度不是Fifo触发值)。优化了丢字节的问题,两个串口都进行了处理。 #### 2021/6/28 1. 删除了STM32F103使用硬件SPI控制CH9434M的例子。 2. 更新了STM32F103使用硬件PI控制CH432的例子。主要修改内容:将串口接收中断那边的程序进行了修改。完善了串口接收读取时的Bug(读取数据长度不是Fifo触发值)。优化了丢字节的问题。