打印

香主求教virtualComPort

[复制链接]
3522|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 chasedreamsl 于 2010-8-10 12:04 编辑

硬件连接电路如:USB电路.jpg和cpu.jpg所示,电源4脚USB_HOST_DEC接AD,不过现在不用。CPU为STM32F103VCT6,采用外部晶振12M,固件库采用STM32_USB-FS-Device_Lib_V3.2.1中的virtual_Com_port。
按照USB时钟要求,已经把PLLCLK配置为72M,USB预分频1.5。程序下载后主机提示:unknown Device,于是看是否有中断产生,具体做法是在void USB_LP_CAN1_RX0_IRQHandler(void)设置标志位,但没看到标志位成功。仔细想想时钟配置应该没什么问题(串口调试成功,板子也跑起来了),固件库也曾在另一个板子上调试成功过,在这里只修改了外部晶振。到现在不知道要怎么下去,还请香主和各位大朋友指导。

USB电路.jpg (54 KB )

USB电路.jpg

cpu.jpg (53.86 KB )

cpu.jpg
沙发
chasedreamsl|  楼主 | 2010-8-9 10:07 | 只看该作者
CM129304为ESD芯片

使用特权

评论回复
板凳
chasedreamsl|  楼主 | 2010-8-10 14:00 | 只看该作者
香主求救啊。

使用特权

评论回复
地板
vigia| | 2010-8-10 16:22 | 只看该作者
你的DP直接接到了3.3V,不知道你是使用USB供电,还是另外有供电。

如果你在下载程序的时候已经连接了USB线,那么主机会在你插上USB线的瞬间要求设备进行枚举,但是此时你应该在下载代码,所以你的设备已经错过了向主机枚举的过程。主机判定枚举超时无响应,所以你的设备变成一个unknown Device。

所以你可以试试脱机跑代码,看看设备能不能正常完成枚举。

使用特权

评论回复
5
chasedreamsl|  楼主 | 2010-8-10 16:30 | 只看该作者
在这里是配置成自供电的,请问vigia硬件上会存在问题吗?
USB是在下载完成后接入的,情况还是一样。

使用特权

评论回复
6
香水城| | 2010-8-10 18:47 | 只看该作者
暂时看不出是什么问题。

记得原来的例子是在晶振为8MHz时配置的,你先用一个8MHz的晶体,在不修改原来程序的基础上试试看是否可以工作。

使用特权

评论回复
7
chasedreamsl|  楼主 | 2010-8-11 15:09 | 只看该作者
6# 香水城
有试过,但是没效果。再向香主请教个问题。
  /* Configure USART Tx as alternate function push-pull */
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_InitStructure.GPIO_Pin = COM_TX_PIN[COM];
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(COM_TX_PORT[COM], &GPIO_InitStructure);
  /* Configure USART Rx as input floating */
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_InitStructure.GPIO_Pin = COM_RX_PIN[COM];
  GPIO_Init(COM_RX_PORT[COM], &GPIO_InitStructure);
  /* USART configuration */
  USART_Init(COM_USART[COM], USART_InitStruct);
   
  /* Enable USART */
  USART_Cmd(COM_USART[COM], ENABLE);
1.这个是在stm32f10e_eval.c对USART1_TX/USART1_RX引脚的配置,我的问题是USB虚拟串口数据是从DP、DM数据线上传来的,为什么还要配置TX/RX引脚?
2.还有从USB读写数据USART_To_USB_Send_Data();USART_ReceiveData(USART1)的函数也是对USARTx->DR寄存器读写,而USB总线上的数据是有个Analog Transceiver接收发送。这样的话从USARTx->DR读写的数据与USB总线的数据不是不一样了吗?

使用特权

评论回复
8
香水城| | 2010-8-11 15:14 | 只看该作者
如果把晶振为8MHz时也有问题,说明不是程序的问题,应该是你的硬件问题。

使用特权

评论回复
9
chasedreamsl|  楼主 | 2010-8-11 15:18 | 只看该作者
8# 香水城
这个马上去查查。香主能不能把刚刚问的问题提点下。

使用特权

评论回复
10
香水城| | 2010-8-11 15:35 | 只看该作者
对不起,我还没有看过这个例子,等有时间我看看吧。

使用特权

评论回复
11
chasedreamsl|  楼主 | 2010-8-11 15:41 | 只看该作者
10# 香水城
谢谢香主。一直问你也挺不好意思的。

使用特权

评论回复
12
vigia| | 2010-8-11 16:23 | 只看该作者
8# 香水城  
这个马上去查查。香主能不能把刚刚问的问题提点下。
chasedreamsl 发表于 2010-8-11 15:18



1, 这个例程是通过USB从主机接收数据,然后将数据通过USART发送到其他外部设备。或者通过USART从外部设备接收数据,然后通过USB将数据上传到主机。所以USART还是需要配置的。

2, 这个问题没看懂。。。。

使用特权

评论回复
13
chasedreamsl|  楼主 | 2010-8-11 18:55 | 只看该作者
12# vigia
谢谢vigia。

使用特权

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

本版积分规则

1

主题

78

帖子

1

粉丝