打印

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

[复制链接]
4330|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
seawwh|  楼主 | 2010-6-14 16:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
假如在PC一侧的虚拟串口执行RTS的设定操作,在STM32一侧可以有代码响应这个操作吗?我在Demo中寻找了一下,未果。

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

   Thanks
沙发
vigia| | 2010-6-14 16:45 | 只看该作者
由于USB协议本身就带了流控,所以不像UART一样需要额外的流控引脚。

所以在USB虚拟串口的代码中,不需要处理RTS之类的信号。

使用特权

评论回复
板凳
seawwh|  楼主 | 2010-6-14 16:53 | 只看该作者
问题是我需要将一个虚拟串口通过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

使用特权

评论回复
地板
vigia| | 2010-6-14 17:08 | 只看该作者
这个说明在例程里面,不需要对Virtual_Com_Port_SetInterface做任何操作,所以以NOP指令来完成set interface的操作,如果你要在set interface的时候做事情,就把这个define屏蔽掉,用你自己的代码来完成Virtual_Com_Port_SetInterface。

使用特权

评论回复
5
seawwh|  楼主 | 2010-6-14 17:22 | 只看该作者
感谢楼上的回答

如果我在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
  };

使用特权

评论回复
6
seawwh|  楼主 | 2010-6-15 10:08 | 只看该作者
又做了一个试验:
  在PC机上打开虚拟串口後,做RTS=1/RTS=0 的操作,在STM32的USB代码部分设置一些断点观察,发现没有程序被触发,是不是可以认为,PC一端就屏蔽了这一类的操作?

使用特权

评论回复
7
vigia| | 2010-6-15 10:40 | 只看该作者
可能吧,要看微软做的CDC驱动有没有这类实现了。

使用特权

评论回复
8
zzwj5120| | 2015-3-6 20:31 | 只看该作者
关注这个问题,上位机操作RTS,不管是STM32F103还是407,总线都无任何反应,下位机无法动作。有谁重写了CDC驱动?请帮助!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

145

主题

368

帖子

0

粉丝