我在csdn上也搜索过一些关于ch376芯片的用法,不过大多都非常笼统。最近我也在做关于用32单片机与ch376连接读取U盘文件项目的一部分。在某宝买了一块ch376模块,看过了给的数据手册,有一部分收获。不过给的例程都是用51写的,对于刚学32的我显然有些吃力,幸好有师兄帮我把部分51的c程序改成了32的。废话不多,我们就直接开始正文。

        ch376数据传输支持8位并口,spi设备接口,异步串口。这里我们用的是异步串口,只需要把模块上的TX和RX与单片机上串口一(查看单片机的数据手册看串口一的收发引脚是哪个)的RX和TX连接,ch376模块接5V电源。接下来第一步我们是要编程调通单片机与模块的通信,我们在给的例程中需找到几个文件(这些文件在买ch376模块的时候商家都会包括的),如下图:

 

stm32与ch376s芯片硬件连接用于读取U盘文件

        不过这里都是51的c程序,需要改成适合32的。

        我们就从程序里面看吧,只给出部分程序,如下:

        uint8_t    mInitCH376Host( void ) 
{
    uint8_t    res;
    CH376_PORT_INIT( );  
    xWriteCH376Cmd ( CMD11_CHECK_EXIST );  
    xWriteCH376Data( 0x65 );                                                                                                                                       
    res = xReadCH376Data();
    if ( res != 0x9A ) return( ERR_USB_UNKNOWN );  

我们在把32和模块 的硬件连接弄好之后下载程序,用编程软件的调试软件来调试。如上图中,第一句定义

变量res,接下来向ch376内发指令“”CMD11_CHECK_EXIST“。这是检测单片机能否与模块通信的指令,需要写入一个数据,可以是任意数据(上面程序写入的数据是0x65)。如果可以通信,则ch376会向单片机返回写入数据的每位按位取反。例如:写入数据为0x65,二进制位 01100101,按位取反后就是10011010,即为0x9A。即res若为0x9A,则代表两者之间能建立通信连接。接下来就设置usb的工作模式,同上述一样,也是写入指令后再写入一个数据,不过这个数据是特定的,应该是规定好的。到此,单片机就能与ch376通信。后续的单片机读取U盘数据还要写其他的程序。。。。

       本篇文章的内容也是我实践得来的结果,希望能够帮助到大家。此外,我是刚开始学嵌入式,有不足的地方希望多多指正。

相关文章:

  • 2021-11-12
  • 2021-09-17
  • 2021-11-12
  • 2021-10-15
  • 2021-04-02
  • 2021-08-18
  • 2021-10-17
  • 2021-10-12
猜你喜欢
  • 2021-10-28
  • 2021-11-12
  • 2021-07-28
  • 2021-10-16
  • 2021-11-29
  • 2021-07-08
相关资源
相似解决方案