搜索
bottom↓
回复: 30

NUC442可以做USB转12个UART ,每个115200全负荷吗?

[复制链接]

出0入0汤圆

发表于 2015-8-7 08:59:03 | 显示全部楼层 |阅读模式

Smart Card Host Interface (SC) 可以用作UART模式,但是只有4个byte FIFO,那样效率很低阿。NUC442可以支持做USB转12个UART ,每个到115200全负荷吗?

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

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2015-8-7 09:54:50 | 显示全部楼层
没有DMA?
USB FS是12M 协议和程序的损失算50% 估计能有6M实际带宽 分给12个UART 一个能有500K的带宽 应付115,2k 应该没问题

出0入0汤圆

发表于 2015-8-7 10:26:37 | 显示全部楼层
我想问声RAM够用吗?

出0入0汤圆

 楼主| 发表于 2015-8-7 11:06:28 | 显示全部楼层
usb这边不担心。问题就算使用DMA,总共16个通道,USB收发使用两个,串口如果每个使用仅7个收发。

出0入0汤圆

 楼主| 发表于 2015-8-7 11:07:35 | 显示全部楼层
SC 的FIFO 4 byte 使用中断模式,肯定不行

出0入0汤圆

发表于 2015-8-7 13:10:29 | 显示全部楼层
好奇地问一下,什么地方需要那么多串口?

出0入0汤圆

 楼主| 发表于 2015-8-7 13:31:20 | 显示全部楼层
串口服务器用

出0入0汤圆

发表于 2015-8-7 13:34:42 | 显示全部楼层
USB这边如果要用CDC的话,端点数不够用。

出0入4汤圆

发表于 2015-8-7 14:40:08 来自手机 | 显示全部楼层
想问下,串口服务器为什么不是总线形式?每台客户机要单独一个串口?小弟不懂,高手请指教。

出0入0汤圆

 楼主| 发表于 2015-8-7 14:43:55 | 显示全部楼层
我们讨论的是产品实现问题,不是为产品要这么用

出0入0汤圆

发表于 2015-8-7 19:15:18 来自手机 | 显示全部楼层
8个收发端点,扣掉控制端点,最多也就只能做7个吧。

出0入0汤圆

 楼主| 发表于 2015-8-8 13:21:41 | 显示全部楼层
不要在USB上做多个endpoint,软件需要重新处理,不直接CDC映射。需要考虑的仅仅是12个串口本身的同时并发处理。

出0入0汤圆

发表于 2015-8-8 15:45:16 | 显示全部楼层
从USB方面看, 12M的USB假设能到达700K纯数据速度,这应该是能达到的。每个串口115200 ,而且双向,极限就是115200*12*2/10=276.480K字节,实际没这么多,速度是USB速度的1/3。如果用同一个端点传输,要提高USB速度要汇集所有串口的数据一起传输,不然每个串口分帧传输肯定效率低了,所以要对数据聚合和拆分,就算上DMA也要做软件数据处理。  从串口方面看, 哪款单片机DMA也不太可能有这么多路,数据量大的几个串口通道用DMA处理,  剩下的一大半通道数据量少只能用中断处理了。 串口模块不知道有几字节FIFO,每个字节间隔是1/11520=86us,  FIFO可以延长好几倍打断时间。如果串口模块都是带好几字节FIFO的,单片机速度又非常非常快(这片子是M4?),实际运行也应该不会所有通道负荷同升同降,估计能抗住不溢出。      12个串口分主通道和次通道,实际不会接近满负荷运行,而且各通道不会同时升降负荷的话应该基本够。不然肯定是没戏的。           如果通道都一样,负荷也同升同降的应用,估计会是一带多的主从了,实际通信内容近似,那可以通过非通用软件实现了。

出0入0汤圆

发表于 2015-8-8 17:31:05 | 显示全部楼层
本帖最后由 tomyqg 于 2015-8-8 17:34 编辑

6个scuart(收发各4字节FIFO) + 6个uart Separate receive / transmit 64/16 bytes (UART0/UART1~5) entry FIFO for data payloads ,还支持EBI,这货是为串口服务器而生么~ 不知道144脚的外扩SRAM (NUC472) + EMAC 还有多少串口可用啊~

出0入0汤圆

发表于 2015-8-8 19:32:40 | 显示全部楼层
tgyd 发表于 2015-8-8 13:21
不要在USB上做多个endpoint,软件需要重新处理,不直接CDC映射。需要考虑的仅仅是12个串口本身的同时并发处 ...

12个串口并发对于CortexM应该没什么问题吧。就算一个字节一个中断,每个串口通信速度20KB/s,那么一秒要 20,000 × 2(双向)× 12 = 480,000 个中断,假设一次中断要100个周期,也就48MHz的CPU时间,还有很多CPU资源可用。
实际优化的中断处理程序应该可以不用100个周期。。。115200/10也才11,520 B/s的速度。。。
头像被屏蔽

出0入0汤圆

发表于 2015-8-9 18:13:45 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

 楼主| 发表于 2015-8-10 10:04:26 | 显示全部楼层
感觉中断的频率超过10KHZ,系统就难处理好了。SC的6个串口在高比特率下不太可行,可以采取的方法使用定时中断,5KHZ左右的间隔去读FIFO可能实际一点。

出0入0汤圆

发表于 2015-8-10 10:19:27 | 显示全部楼层
最槽糕的情况是12个同时工作,如何处理?
估计够呛。

出0入0汤圆

发表于 2015-8-10 10:33:06 | 显示全部楼层
bbs2009 发表于 2015-8-9 18:13
从USB方面看, 12M的USB假设能到达700K纯数据速度..
------------------------------------------------- ...

USB是必须大块传输才能高速。   已经算过12个串口双向同时传最大200多K字节。  USB部分采用定时收发方式。  比如2MS一次,既能攒够大包又能实时。  USB部分是肯定没问题的。    问题还是在密集的串口中断处理吧。

出0入0汤圆

发表于 2015-8-11 07:47:22 来自手机 | 显示全部楼层
如果用CDC协议,这么点端点是完全不够的。每个端口至少要2个端点。
头像被屏蔽

出0入0汤圆

发表于 2015-8-13 09:28:35 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽

出0入0汤圆

发表于 2015-8-13 09:52:05 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽

出0入0汤圆

发表于 2015-8-13 10:16:16 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入8汤圆

发表于 2015-8-13 10:19:59 来自手机 | 显示全部楼层
bbs2009 发表于 2015-8-13 09:52
USB是必须大块传输才能高速。。。  USB部分采用定时收发方式,2MS一次
-------------------------------- ...

USB的查询间隔时USB主控制器决定的
这个值会根据描述符来设定,基本不用pc软件参与
实际上这个应用的瓶颈不在USB速度上
而在串口上,而如果每个串口都有fifo之类的东西,会简单一些
很有可能是部分有部分没有

出0入8汤圆

发表于 2015-8-13 10:21:02 来自手机 | 显示全部楼层
bbs2009 发表于 2015-8-13 10:16
要2 ms 定时传输只能用 中断传输了。

同步传输也可以
就是没了校验和重发机制

出0入0汤圆

发表于 2015-8-13 11:00:02 | 显示全部楼层
bbs2009 发表于 2015-8-13 09:52
USB是必须大块传输才能高速。。。  USB部分采用定时收发方式,2MS一次
-------------------------------- ...

确实,问题转移到PC定时读写了。包大小没问题的,问题在保证间隔。  中断传输最大64字节速度是不够的,同步传输怕丢,只能用批量传输。将USB间隔拉太长能攒大包能降低PC定时器间隔但会影响实时性了。   如果PC专用只干这个事,优先级最高,应该是可以的。就像平时测试USB转串口,别的软件都不用,就串口助手几百K字节速度一口气不停歇的跑几个小时。 文员妹纸电脑边看电视剧边跑数据,或者攻城狮边编译软件画图边后台跑数据肯定不能保证实时性了。

出0入0汤圆

发表于 2015-8-13 11:01:09 | 显示全部楼层
压力转移到电脑程序猿身上。。。
头像被屏蔽

出0入0汤圆

发表于 2015-8-13 14:50:14 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2015-8-14 17:52:49 | 显示全部楼层
NUC442并没有12个串口吧

出0入0汤圆

发表于 2015-9-2 14:30:40 | 显示全部楼层
这个要求有点高,如果有流量控制还好实现些。

出0入8汤圆

发表于 2015-10-2 14:56:47 | 显示全部楼层
这个如果做传统的USB到串口的,也就是在电脑上看到的是一个一个的串口的话,基本不可能,CDC类需要一个配置端点,一个收发端点(设置串口参数用),也就是两个,一般MCU不会做到二三十个端点的吧话说,

如果按STM32F1来看的话,最多3个就完了,1+2×3 = 7端点

当然如果单独重写驱动还是有可能的,通过虚拟若干串口,然后再到你的设备,技术上是没有问题的,不过那样我觉得选择以太网的方式更稳当。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-3-29 18:07

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

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