|
C:\ti\c2000\C2000Ware_1_00_06_00\device_support\f2837xd\examples\cpu1\sci_echoback
上边的路径包含TMS320F28379D的UART例程,用来接收电脑的数据然后把数据原路返回
例程不是针对LAUNCHXL-F28379D板子写的,虽然里边有判断_LAUNCHXL_F28379D的宏定义#ifdef _LAUNCHXL_F28379D
不过只定义_LAUNCHXL_F28379D是没有用的,它只是用来配置时钟,像引脚定义这样地方还需要自己修改
之前已经提到这个问题,感觉代码这么设计挺不合理的。
SCI的时钟LSPCLK默认为SYSCLK/4 200MHz的主频时为50MHz
SCIHBAUD和SCILBAUD都设置为0时UART的波特率为50MHz/16=3125000
因为涉及大量的数据传输我想试着提升UART的波特,将LSPCLK改为SYSCLK/1即200MHz
这样UART的波特率理论应该达到12500000,实际测试时发现波特率并没有变化,PC使用3125000才能正常通信
参考其它代码发现修改时钟需要执行__asm(" EALLOW"),添加代码后波特率发生变化,但是通信乱码
通过此方法将LSPCLK修改为SYSCLK/8对应的波特率下通信正常
这说明LSPCLK修改成功,但是波特率在12500000和6250000时都出现乱码
用示波器测量12500000能看到波形,不知道是示波器的带宽不够还是本身波形已经不正常,看到的波形挺难看的试着将LSPCLK设置为100MHz,SCILBAUD=2,SCI Asynchronous Baud = LSPCLK / ((BRR + 1) *8)
波特率为4166666,可以正常通信
试着将波特率设置为5000000也可以正常通信
基本上5000000就是28379D的UART支持的最大波特率了
开始怀疑是ISO7240CDWR这个隔离芯片的速率不够,看数据手册写的2.5 kVrms, 25 Mbps, 4-Channel 4/0 Digital Isolator,25Mbps也没拖后腿
现在也想不出问题出在哪了,数据手册和用户手册里没找到相关介绍,不确定理论上28379D可以支持最高多少的波特率
|
|