读取CH372端点2数据经常出错,请问如何解决

读取CH372端点2数据经常出错,请问如何解决。 用labview的usb例程与avr控制的ch372通信。 读取的时候出错的概率非常大。 比如pc端发送1234,mcu从372中读到的是1344. 发送AMEN,读到AMNN。

程序如下,mcu为atmega16,cvavr编译。 void CH372_WR_CMD(UINT8 cmd) //向CH372写1byte命令 { delay_us(2); A0=1; DDRB=0xff; PORTB=cmd; WR=0; RD=1; DDRB=0xff; WR=1; RD=1; A0=0; DDRB=0x00; delay_us(2); }

void CH372_WR_DAT(UINT8 cmd) //向CH372写1byte数据 { PORTB=cmd; DDRB=0xff; A0=0; WR=0;RD=1; DDRB=0xff; WR=1;RD=1;A0=0; delay_us(1); }

UINT8 CH372_RD_DAT(void) //读1byte ch372数据 { UINT8 temp; delay_us(1); DDRB=0x00; A0=0; RD=0; WR=1; DDRB=0x00; temp=PINB; RD=1; WR=1; return temp; }

void get_status(void) //处理中断状态 { UINT8 length,i,buffer[64]; CH372_WR_CMD(0x22);

switch (CH372_RD_DAT()) {

case 0x02: //批量端点/端点 2 接收到数据 CH372_WR_CMD(0x28); length=CH372_RD_DAT(); for ( i = 0; i < length; i ++ ) buffer[ i ] = CH372_RD_DAT(); break; }

201043023202627.jpg[Emot]7[/Emot]

应该是都放假了吧


先做测试命令检查一下单片机和CH372之间的数据线连接有没有问题,发送0x06命令,发送数据0x55,正常应该返回0xaa, 然后在放过来测试一下,发送0x06命令,发送数据0xaa,正常应该返回0x55


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