请教下关于MCU给CH372传送数据的问题。

第一次使用CH372,请教下WCH技术人员有关MCU给CH372传输数据的问题,子程序如下:


向CH375写数据函数
********************************************/
void WR_DAT_ch375(unsigned char dat)
{
PORTC &= ~(1 << A0);?//A0 = Low 选择输出是数据
PORTC &= ~(1 << WR);//WR = Low 选择写
DDRA = 0xFF;
NOP;? //两个空操作,CH375时序要求(不使用时也可以,为了稳定还是加了)
NOP;
PORTA = dat;? //端口写数据(0x55)
}
/*******************************************


  1. 用WR_USB_DATA7 从端点2写数据,假设要写1位数据,是否执行上面这个子程序1次即可?

  2. 用WR_USB_DATA7 从端点2写数据,假设要写10组数据,是否循环执行上面这个子程序10次即可?考虑到10次循环中A0,WR 没有变化,是否意味着写N组数据实际就是连续往端点2扔N组数据即可?

  3. 如何通知CH372 MCU已经数据写完毕?好像没有看到送结束的标志。

  4. WR_USB_DATA7的命令中包含数据长度,是否在数据长度定义数量,例如数据长度是10,那CH372在收到10个数据后认为就结束了,以数据长度作为结束标志?没有10就一直等,超出10就不认了?

  5. USB端口2如果是64的包,如果需要送128的数据那就意味着2个包,那是否第一个包循环上面子程序64次,第二包如何操作?尤其是第1和第2包的间隔需要怎么处理?是否可以直接循环子程序128次?


您好,如果只是往端点缓冲区写数据是通过多次轮询写函数操作,具体可以参考我们例程的CH375WriteBlock函数。写数据完毕,也只是写到我们缓冲区。如果是多包这个USB协议中是有规范,通过DATA0/1区分。


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