Part Number:TMS320C6748
C6748自带三路串口UART0、UART1、UART2。目前想采用UART1、UART2作为串口接收端,接收外部两路串口数据,此两路串口码流分别为115200bps、460800bps,帧频分别为500Hz、5Hz,每帧数据量均约10个字节;UART0作为串口输出端,输出数据给外部其他设备,码流为115200、帧频100Hz、每帧数据约20字节。能否将C6748三路串口分别直接连接外部三路串口设备(已确保接口电气匹配)?主要担心当一路串口收数或发数时,另外两路串口有中断信号,导致出现串口数据接收或发送丢数现象?请教!
Tony Tang:
根据描述,数据帧长是固定的,这样可以使能FIFO,用EDMA来搬数据。最高帧频500Hz,即间隔2ms, 就看2ms能否处理完数据了,包括EDMA的中断处理。或者可以在接收多帧数据再处理。
,
user6111471:
如果接收的串口数据帧长是可变的,且帧频如果提高到1000Hz时,用这种方式接收串口数据,不知可靠性如何?收、发外部三路串口数据,有没有其他可靠性更好的设计方案?请教!
,
Tony Tang:
用EDMA收数不是问题,因为不需要CPU的参与,问题是软件运算处理数据是否来得及。比如说1KHz帧频的数,如果在帧与帧之间要把数据处理完,这1ms时间是否够。这取决于你的处理程序的复杂度。
如果处理不过来,在C6748上可以考虑用里面的PRU来服务一个UART,如果还不够,可以考虑用OMAP-L38,比C6748多一个ARM9,将不同的UART分到不同的核上处理,硬件上是pin to pin 兼容的。