关于STM32虚拟串口的RTS线的控制问题

akun200ren   2010-6-14 16:37 楼主
假如在PC一侧的虚拟串口执行RTS的设定操作,在STM32一侧可以有代码响应这个操作吗?我在Demo中寻找了一下,未果。

   有同行知道代码的何处可以响应这个操作?

   Thanks

回复评论 (6)

由于USB协议本身就带了流控,所以不像UART一样需要额外的流控引脚。

所以在USB虚拟串口的代码中,不需要处理RTS之类的信号。
点赞  2010-6-14 16:45
问题是我需要将一个虚拟串口通过STM32的UART输出,这个UART的RTS线如何操作?
在 usb_prop.h 中有下面的描述,是不是和
   Virtual_Com_Port_SetInterface     相关,在此这个操作被关闭掉了。         

#define Virtual_Com_Port_GetConfiguration          NOP_Process
//#define Virtual_Com_Port_SetConfiguration          NOP_Process
#define Virtual_Com_Port_GetInterface              NOP_Process
#define Virtual_Com_Port_SetInterface              NOP_Process
#define Virtual_Com_Port_GetStatus                 NOP_Process
#define Virtual_Com_Port_ClearFeature              NOP_Process
#define Virtual_Com_Port_SetEndPointFeature        NOP_Process
#define Virtual_Com_Port_SetDeviceFeature          NOP_Process
//#define Virtual_Com_Port_SetDeviceAddress          NOP_Process
点赞  2010-6-14 16:53
                                 这个说明在例程里面,不需要对Virtual_Com_Port_SetInterface做任何操作,所以以NOP指令来完成set interface的操作,如果你要在set interface的时候做事情,就把这个define屏蔽掉,用你自己的代码来完成Virtual_Com_Port_SetInterface。
点赞  2010-6-14 17:08
感谢楼上的回答

如果我在PC一侧置RTS=1, 那么STM32一侧的哪一个函数可以响应呢?
是不是下面的某一个呢?
是Virtual_Com_Port_SetInterface吗?

DEVICE_PROP Device_Property =
  {
    Virtual_Com_Port_init,
    Virtual_Com_Port_Reset,
    Virtual_Com_Port_Status_In,
    Virtual_Com_Port_Status_Out,
    Virtual_Com_Port_Data_Setup,
    Virtual_Com_Port_NoData_Setup,
    Virtual_Com_Port_Get_Interface_Setting,
    Virtual_Com_Port_GetDeviceDescriptor,
    Virtual_Com_Port_GetConfigDescriptor,
    Virtual_Com_Port_GetStringDescriptor,
    0,
    0x40 /*MAX PACKET SIZE*/
  };
USER_STANDARD_REQUESTS User_Standard_Requests =
  {
    Virtual_Com_Port_GetConfiguration,
    Virtual_Com_Port_SetConfiguration,
    Virtual_Com_Port_GetInterface,
    Virtual_Com_Port_SetInterface,
    Virtual_Com_Port_GetStatus,
    Virtual_Com_Port_ClearFeature,
    Virtual_Com_Port_SetEndPointFeature,
    Virtual_Com_Port_SetDeviceFeature,
    Virtual_Com_Port_SetDeviceAddress
  };
点赞  2010-6-14 17:22
又做了一个试验:
  在PC机上打开虚拟串口後,做RTS=1/RTS=0 的操作,在STM32的USB代码部分设置一些断点观察,发现没有程序被触发,是不是可以认为,PC一端就屏蔽了这一类的操作?
点赞  2010-6-15 10:08
                                 可能吧,要看微软做的CDC驱动有没有这类实现了。
点赞  2010-6-15 10:40
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复