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

发现一个TMS320F2812 UARTA与UARTB的不同点,请大家注意

背景:

最近在调试一块TMS320F2812的电路板

使用了2812的UARTA及UARTB

因为是电机系统,所以外接PC机的UARTB加了一个串口隔离芯片后连接外部线缆

UARTA在系统内与另外一颗处理器通讯

设备不允许同时使用两个串口,所以加了保护机制

由于缺件,所以UARTB的串口隔离芯片没有焊接,即SCIBTX和SCIBRX没有接任何连接

调试时发现,串口A数据通讯异常。

问题的解决:

用仿真器跟了下代码,发现上电UARTB会受到0x00,即串口B收到了数据,此时再和串口A通讯,就会触发保护机制,造成串口A通讯异常。

查了一下TMS320F2812的datasheet,有如下发现:

2812的串口A有内部上拉;

2812的串口B没有内部上拉。

对于我的电路板,串口B的RX、TX相当于浮空,由于串口线空闲为高电平,起始位为低电平,所以浮空的管脚可能会到导致上电串口B收到0x00或其他数据。

TMS320F28335没有这个问题:

当初看2812的串口区别时只是注意到了可以串口A下载代码,电路上的这个细节没有注意到。

Ling Zhu2:

感谢分享~

背景:

最近在调试一块TMS320F2812的电路板

使用了2812的UARTA及UARTB

因为是电机系统,所以外接PC机的UARTB加了一个串口隔离芯片后连接外部线缆

UARTA在系统内与另外一颗处理器通讯

设备不允许同时使用两个串口,所以加了保护机制

由于缺件,所以UARTB的串口隔离芯片没有焊接,即SCIBTX和SCIBRX没有接任何连接

调试时发现,串口A数据通讯异常。

问题的解决:

用仿真器跟了下代码,发现上电UARTB会受到0x00,即串口B收到了数据,此时再和串口A通讯,就会触发保护机制,造成串口A通讯异常。

查了一下TMS320F2812的datasheet,有如下发现:

2812的串口A有内部上拉;

2812的串口B没有内部上拉。

对于我的电路板,串口B的RX、TX相当于浮空,由于串口线空闲为高电平,起始位为低电平,所以浮空的管脚可能会到导致上电串口B收到0x00或其他数据。

TMS320F28335没有这个问题:

当初看2812的串口区别时只是注意到了可以串口A下载代码,电路上的这个细节没有注意到。

user78960159:

回复 Ling Zhu2:

我的代码是这样的:

UARTA_RX_ISR()

{

  …

  com_rx();

  …

}

UARTB_RX_ISR()

{

  …

  com_rx();

  …

}

com_rx是处理串口数据的一个函数,这点不太合理,中断有两个,但是处理数据的函数是共用的!

测试时发现,串口A可以正常接收数据,接收的数据也是对的,但是就是触发保护机制。

在进一步将断电设置在com_rx函数中,才发现上电后代码会运行到这个函数设置断点的地方,此时并没有给串口A发数据。

随后查阅2812数据手册找到了原因,并对比了28335数据手册

赞(0)
未经允许不得转载:TI中文支持网 » 发现一个TMS320F2812 UARTA与UARTB的不同点,请大家注意
分享到: 更多 (0)