CH573 CDC 模拟usb转串口精简版-已验证

在官方的cdc例程icon_rar.gifCH573_CDC_OK.zip,基础上修改,原版程序文件太复杂,不便学习


所以在其基础上,删除了shell文件夹(应该是用于调试的),key按键等代码。仅保留cdc相关代码。最终例程如下:

icon_rar.gifCH573_CDC_Lite.zip

程序功能:

模拟CDC设备,将usb接口模拟成串口设备,实现USB和串口0之间的数据互传。也可以将串口0代码删除,并修改usb处理函数如下,实现usb模拟串口自发自收。

/**
?*?USB<-->串口数据处理
*/
void?usb_uart_comm_handle(void)
{
??uint8_t?len?=?0;
??static?uint8_t?tempbuf[128]?=?{0};
??len?=?ring_buffer_num_items(&usb_to_uart_rb);
??if?(len?!=?0)
??{
????len?=?len?>=?64???64?:?len;
????ring_buffer_dequeue_arr(&usb_to_uart_rb,?pEP2_IN_DataBuf,?len);
????DevEP2_IN_Deal(len);
??}
}


感谢分享


源码中该处建议修改成如下字符编写方式,直观易懂,并且源码中序列号描述符实测是错误的,按如下编写才可正常显示。

其中字符可自行修改内容,每个字符后都要接一个0x00。但注意每个数组第一个成员表示成员个数,需要随成员数量改变。第二个0x03是固定的。

//?语言描述符
const?UINT8?MyLangDescr[]?=?{0x04,?0x03,?0x09,?0x04};
//?厂家信息?wchcn
const?UINT8?MyManuInfo[]?=?{0x0E,?0x03,?'w',?0,?'c',?0,?'h',?0,?'.',?0,?'c',?0,?'n',?0};
//?产品信息?CH57x
const?UINT8?MyProdInfo[]?=?{0x0C,?0x03,?'C',?0,?'H',?0,?'5',?0,?'7',?0,?'x',?0};
//?序列号描述符?TEST
const?UINT8?MySerDes[]?=?{0x0A,?0x03,'T',?0x00,?'E',?0x00,?'S',?0x00,?'T',?0x00};

请问一下,我在这个文件里面操作flash data,总是会报错,是我调用的哪里有问题吗?而且我调了好半天,中间还遇到过,操作flash这句没报错,反而之前正常的语句报错了,屏蔽了flash这句,其他地方也不报错了。

1699113769179412.png

1699113770198607.png



只有登录才能回复,可以选择微信账号登录
排五机选一注中奖