LM4F232 的usb虚拟串口程序(usb_dev_serial)如何修改为单串口收发???



C:\StellarisWare\boards\ek-lm4f232\usb_dev_serial  程序使用两个USB口来模拟串口,一个收,一个发,使用不便。请问如何修改为使用单串口就可以收发???不要告诉我去单步跟踪,我已经这么做了,找不到发送的语句。请问如何修改??

  • 如果只是想知道如何使用UART,可以参考StellarisWare\boards\ek-lm4f232\hello这个例程

  • 不是指普通串口,我说的是USB虚拟得到的串口

  • 在这里一两句比较难讲清,建议楼主多读读代码。程序是中断事件驱动的,有时候单步调试也不一定能看明白。

    给楼主的提示是,注意以下这两个函数,它们分别是对USBBuffer的读写操作的(接收或者发送数据):

    USBBufferRead

    USBBufferWrite

    在RxHandler中展示了USB数据到来时的处理方式(通过USBBufferRead读取数据),TxHandler展示了USB数据发送完成时的处理方式(不理会,通常随时可以使用USBBufferWrite写数据)。

  • Richard 可能误解了楼主的意思,楼主是讲USB虚拟串口时,占用了USB的两个端点,一个用于接收,一个端点用于发送,这样不太方便。能不能改成一个端点既接收又发射。这里需要给楼主普及下USB的基础知识。

    1. USB的端点是有方向性的,一个端点在一个时间点只能工作在IN 或OUT模式.

    2. USB的端点除了端点0(控制端点)外都只能是单向的,也就是说端点1-端点15在同一设备的某个时间段,只能工作在IN(输出) 和OUT(输入)一个模式.端点0为控制端点,支持双向通信,但该端点为设备和主机枚举通信的专用端点,不能作为功能端点使用.

    3. 基于上面的描述,如果要实现一个USB转串口的设备,就必须至少使用两个端点.一个用于发送,一个用于接收。

    4. TI M4的芯片USB控制器支持16个端点,其中有2个端点被控制端点专用为输入(OUT)和输出(IN), 剩下的14个端点,7个可以配置成输入,7个可以配置成输出。

    也就是说楼主如果想用M4实现USB转多个串口的应用的话,最多能做7个虚拟串口.