TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320C6748: 6748 串口&edma

Part Number:TMS320C6748

您好:

想使用串口EDMA发送数据,但在验证时遇到了一些问题,如下:
用UARTCharPut()函数发送数据耗时比较长,测试发现发送80个字节需要600多us,希望时间能更快一些。昨天就测试了用串口EDMA进行数据的收发,但做一个串口EDMA收和一个串口EDMA发没验证成功,就退而选择使用串口中断接收数据,用另一个串口EDMA发送数据,但在测试时发现使用EDMA发送数据需要等待的时间也比较长,使用UART_EDMA测试时,使用以下代码测试,
for(volatile unsigned int x = 100000;x>0;x–);
TSCH = 0;
TSCL = 0;
start = _itoll(TSCH,TSCL);

UartTransmitData(EDMA3_CHA_UART2_TX, EDMA3_CHA_UART2_TX, enter,strlen((const char *)enter));

end = _itoll(TSCH,TSCL);
DSP_SCL_UART = end – start;
cnt = 0;

发现收到的数据还是不完整的,只接收到一半的数据,配置还是例程里的配置没有改动,就是想问问是不是串口EDMA发送数据的时间和UARTCharPut()发送的时间是差不多的呢?或者还有没有其他耗时比较短的发送方式呢?
但是如果将间隔时间延长,如以下代码,则能接收到完整的数据,但是这样的话就和原本的意图相违背了。
for(volatile unsigned int x = 500000;x>0;x–);
TSCH = 0;
TSCL = 0;
start = _itoll(TSCH,TSCL);

UartTransmitData(EDMA3_CHA_UART2_TX, EDMA3_CHA_UART2_TX, enter,strlen((const char *)enter));

end = _itoll(TSCH,TSCL);
DSP_SCL_UART = end – start;
cnt = 0;

Shine:

请问用的是TI的板子还是自己的板子?是TI startware里的uart_edma例程?这个例程只传输20个字符。

通常来说,同样的条件下,EDMA是通过硬件搬移的,要比CPU搬移快。请参考下面的帖子。https://e2e.ti.com/support/processors-group/processors/f/processors-forum/384458/c6748-uart-driver-using-edma-for-higher-performance

,

user6549373:

感谢回复,想咨询一下TI startware里的uart_edma例程可以如何实现一直收发呢?

,

Shine:

这个例程是和PC通信的测试程序,可以修改PC端发送的字节数#define RX_BUFFER_SIZE             20。

,

user6549373:

好的 感谢

,

Shine:

不客气~

,

user6549373:

您好,这边改动为用while循环 宏定义设置成1,进行循环的时候,一次发送一个字节可以连续发送,不过现在想实现任意字符的收发需要怎么修改,望能提供大概的修改思路。

赞(0)
未经允许不得转载:TI中文支持网 » TMS320C6748: 6748 串口&edma
分享到: 更多 (0)