搜索
bottom↓
回复: 243

【原创开源】 基于 STM32F103C6T6 的 USB 转 RS232 模块..

  [复制链接]

出0入0汤圆

发表于 2009-11-23 19:03:11 | 显示全部楼层
请问安哥,那个壳子哪里有得买呀?

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2009-11-23 22:40:24 | 显示全部楼层
【12楼】 lvhaian 安哥

谢谢安哥,目前产品定位比较低,无法采用这个价位的外壳

我觉得如果外壳价格这么高的话,如果没有大批量,不如买阿莫的一台雕刻机,自己买一些标准壳来开孔做外壳。

出0入0汤圆

发表于 2009-11-26 16:27:32 | 显示全部楼层
请教安哥

刚刚看了一下代码,有几个问题,请安哥指点

【一】buf_usb_to_uart 这个队列实际是没有使用的,是吧?

【二】另外,开USART_IT_TXE这个中断的用意是什么呢?这个应该也是没有用到的吧?

【三】两个队列写满以后调用的QueueWriteFull,这是不是一个Bug?
      QueueWriteFull 里面的功能是针对 USB To UART的?实际上只有 buf_uart_to_usb 队列才用到了呀?
      我猜想,这个功能之所以没有出错,是因为实际上UART的速度远远小于USB的速度,不会出现队列写满的情况?

出0入0汤圆

发表于 2009-11-26 20:58:59 | 显示全部楼层
顶一顶,请安哥有空来看看

出0入0汤圆

发表于 2009-11-27 13:08:59 | 显示全部楼层
谢谢安哥~~~

继续请教一些问题哈

我尝试修改程序,将STM32串口接收改成从FLASH中读取数据,然后通过USB发送到PC

这样的结果是丁丁的SSCOM32顶不住,一开就死,数据量太大了,用系统自带的超级终端就没有问题,我猜这个问题应该是USB的驱动造成的?从STM32 USB 到PC USB这里并没有按照设定的串口速率才传输的,而是以最大速度传输的?

另外一个问题是,我看到SSCOM在发送数据的时候,一次是发送256个字节,但在STM32 的USB参数设置里面,BUFFER的大小是设置为64字节的,这个会有冲突吗?我不懂USB通讯,这个问题可能有些RZ哈……

出0入0汤圆

发表于 2009-11-27 16:04:24 | 显示全部楼层
安哥~

我刚刚试了 串口调试助手 V2.2 ,更不行呀,久违的电脑蓝屏都出来了

使用机器真串口发送是没有问题

使用USB模拟串口,选择发送文件,我选择了一个800Kbyte大小的文件,选择16进制发送

一点击发送就蓝屏了……

看来小小的串口调试软件里面都有大技术呀,关于计算机串口的软件,微软的功力还是无人可及的。超级终端咋就这么稳定呢?

可惜超级终端功能用来调试单片机不合适,无法显示HEX,无法按HEX发送字符和文件……

出0入0汤圆

发表于 2009-11-28 15:25:36 | 显示全部楼层
新的一天又开始啦

继续研究 STM32 USB CDC

代码中,使用了Queue中间件

对于Queue的数据结构,我有一点疑问

在QueueCreate函数中,读取空处理和写满处理的声明是这样的:
uint8_t (* ReadEmpty)()
uint8_t (* WriteFull)()

但具体的调用的格式是这样的:
err = Queue->ReadEmpty(Ret, Queue);
err = Queue->WriteFull(Queue, Data, Q_WRITE_MODE);

实际的函数声明是这样的:
u8 QueueWriteFull(DataQueue *Buf, QUEUE_DATA_TYPE Data, u8 Mod)

这样不会出错吗?好像实际编译并没有报错?

函数指针的形参不一致也可以调用的吗?

出0入0汤圆

发表于 2009-12-1 15:41:07 | 显示全部楼层
现在遇到了一个新问题:

当PC USB传输过来的数据需要较长时间进行处理的时候,如果等处理完再将USB端口置为有效,会导致PC端大部分串口程序都响应不过来,可能是线程阻塞了?

如果是接收到数据,使用队列FIFO缓冲,直接将USB端口置为有效,然后再处理数据,这样会造成数据包可能丢失

因为USB置为有效以后,PC马上又发下一个数据包了……


我看了一下,USB批量传输是有NAK机制的,就是如果从器件太忙了,暂时没有能力接收数据,就可以发NAK包,主机收到后,就会等一段时间再重新发

STM32的USB库带了这个机制吗??在这个范例中是否有实现这个?

出0入0汤圆

发表于 2010-3-1 01:18:18 | 显示全部楼层
回复【65楼】litteworm
-----------------------------------------------------------------------

谢谢 litteworm~

我也一直没解决这个问题,后来我是在上位机自己写了一个简易的串口程序,直接延时发送来解决这个问题的。手法很粗糙

你要是有时间的话,看看能否改进一下这个STM32 虚拟串口程序?使得大批量数据处理的时候,上位机能够等待……
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-23 14:42

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表