CH375和CH372常见问题的解决[讨论]

我用的MC9S08控制CH372B,内置固件模式,实现并口转USB功能。为何读数据/状态时,最高位始终是1,6~0位是正确的。我发送命令、数据CH372B的响应是正常的。更换了一片CH372B问题一样。


您好,您可以确认以下几点:

  1. 确认两颗芯片之间并口通讯是否正常,即发送读获取版本号命令,其次您设置为内置固件模式,电脑是否正确识别到了372设备。

  2. 关于读取数据的时候,您的MCU(控制芯片)IO的输入配置是否正确。

  3. 检查硬件电路,D7脚的连接是否正常,以及查看读取数据的程序是否哪里有错误的操作。


您好,谢谢您及时的解答:

1、两颗芯片通讯完全正常,我给CH372写入的数据和命令都正常,读出数据0~6位也正常,就第7位读出一直为1;我都用你们的调试软件试过,即单片机收到数据后,原样返回;如果忽略第7位数据,全部正常。电脑识别372设备正常;

2、我最不解的是为何同一个并口,只有1位会有问题?


2、我比较疑惑的是,我的IO口是8位口,都是统一操作的,为何会出现只有1位不正常?更换过CH372B,问题依旧。



我又进行了如下实验:

   上电后,不进行任何设置,直接读取并口数据。按照数据手册的描述,读出数应该是0,但是读到的是0x80。我用示波器测量D7信号,确实始终是高电平。而D0~D6,在RD信号为低时,会输出低电平,RD信号为高时,会恢复到高电平。我又将单片机和D7连接的引脚断开,D7也始终是高电平。最后我又将D7接到另一个输入口上,读到的也始终是1,实在没有办法了。

    总之,就是上电后,我只执行读取操作,D7和D6~D0的效果就不一样。


读数子程序:

byte ch372_data_read(void)

{

  volatile byte recv_data1;  

    PTHDD=0x00;         //port input mode   

    DATA_WR;  //A0=0      

    CH372_RD_EN;  //RD=0;

    DELAY(1);

    SRS=0x00;

    recv_data1=PTHD;    

    CH372_RD_DIS;   //RD=1;

  return recv_data1;

}


CH372.jpg

以上是CH372电路,I/O引脚和MCU引脚直连




您好,看您的原理图,这边CH372的最小系统图是没有问题的。关于您读取数据的函数,请问您CS脚有控制么?读取函数您可以参考这段代码移植过去进行尝试。您也可以把MCU的D7脚接地,然后读取数据,看看是否也是为1.

   u8 PortData;   

   DATA_MODE_IN;  //把STM32连接CH375的数据端口配置成输入,读取CH372的数据


delay_us(10);   //延时

CS=0;           //打开片选

delay_us(10);

A0=0;           //数据模式

delay_us(10);

RD=0;           //打开读使能

delay_us(10);

PortData = (u8)( GPIO_ReadInputData(GPIO_CH375_Data) );  //读取数据

delay_us(10);

RD=1;           //关闭读使能

delay_us(10);

CS=1;           //关闭片选

delay_us(10);

A0=1;           //恢复A0为高电平

delay_us(10);

   return PortData; //返回读到的数据



你好,我想问一些关于CH376的问题:

1、文件属性(创建时间、修改时间等)是在创建文件的时候自动生成的?还是需要我发指令,把这些属性都写到某个固定位置?【我实测发现在PC端显示U盘中文件的创建时间、修改时间都不对,修改时间都是2004.01.01】

2、参照EXAM13例程,读取文件属性返回的长度为32,正确,但属性内容也全部为32,是哪里出错了吗?

企业微信截图_16680450119411.png


你好,我想问一些关于CH376的问题:

1、文件属性(创建时间、修改时间等)是在创建文件的时候自动生成的?还是需要我发指令,把这些属性都写到某个固定位置?【我实测发现在PC端显示U盘中文件的创建时间、修改时间都不对,修改时间都是2004.01.01】

2、参照EXAM13例程,读取文件属性返回的长度为32,正确,但属性内容也全部为32,是哪里出错了吗?

企业微信截图_16680450119411.png


直接修改文件属性是可以成功的,比如直接把文件名的后缀从TXT改为EXL。但是如果要先判断这个文件是不是TXT然后再修改的话,就得先把属性读出来判断,这时读取就会出错。


读到的文件属性32好像一直是前面返回的长度,32对应的字符是space(空格)。

因为我又测了读U盘的厂商信息和产品信息,INQUIRY_DATA结构体类型的大小为36,所以读到的长度也是36正确,紧接着读到的厂商信息和产品信息内容也全是36,对应的字符是$$$$$$$$$$$$$$$$$$$$$$$$$$$$

请问这是哪里的问题呢?望解答!谢谢


您好,正常来说厂商的这些信息都是unicode编码,您可以看一下是否为编码格式问题,导致的乱码显示等。


只有登录才能回复,可以选择微信账号登录