IMX6UL Linux下Rs485异常

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

IMX6UL Linux下Rs485异常

1,649 Views
zhaopingyang_sg
Contributor III

Linux内核版本:4.1.15

RS485波特率:230400

发送周期:50ms

发送数据长度:单次11个字节

设备树配置如下:

pastedImage_2.png

在IMX6UL下使用UART3作为RS485模式进行数据收发,发现发送数据重复(已排除是上层应用的问题),如下所示:

pastedImage_1.png

0 Kudos
2 Replies

1,474 Views
weidong_sun
NXP TechSupport
NXP TechSupport

Hi Zhaoping,

   这个问题,是典型的"收/发"方向转换造成的问题。 做收/发转换有3种方法:

1. GPIO控制

你采用的是这个方式。

2. 用UART_CTS_B引脚控制

linux BSP中支持这种工作方式,也就是uart driver中支持。

3. 硬件电路自动感知收发方向

其中,第一种方式最不容易控制,因为你不知道什么时候发送完成,而转为接收;也不知道什么时候接收完成,而转为发送。

你可以看一下你的硬件电路图,是否在UART TO RS485芯片的收发控制脚连接了CTS_B引脚,如果有,你可以采用第二个方法。

然后,到dts目录用类似grep -r -n 'rs485' ./ 命令搜索一下,有的dts中使用了这个配置,参考它配置你的uart节点。

Have a nice day!

BR,

Weidong

0 Kudos

1,474 Views
zhaopingyang_sg
Contributor III

你好,谢谢您的答复!

我昨天仔细测试了一下发现如下的规律:如果发送使用DMA方式的话会出现这个问题:原因是在驱动的源码中有两个地方修改了xmit的tail指针:

第一个在dma_tx_callback中,如下所示:

第二个在 imx_transmit_buffer中,如下所示:

如果我发送的数据比较长的话就会导致tail指针回卷,导致旧数据再次发送。

还有一个问题我想咨询一下:为甚在DMA使能的情况下imx_transmit_buffer中还需要将数据写入到URTX0中?

杨兆平

|

|

13581584497@163.com

|

签名由网易邮箱大师定制

在2020年1月9日 10:39,weidong.sun<admin@community.nxp.com> 写道:

|

|

NXP Community

|

|

Re: IMX6UL Linux下Rs485异常

reply from Wigros Sun in i.MX Processors - View the full discussion

Hi Zhaoping,

这个问题,是典型的"收/发"方向转换造成的问题。 做收/发转换有3种方法:

1. GPIO控制

你采用的是这个方式。

2. 用UART_CTS_B引脚控制

linux BSP中支持这种工作方式,也就是uart driver中支持。

3. 硬件电路自动感知收发方向

其中,第一种方式最不容易控制,因为你不知道什么时候发送完成,而转为接收;也不知道什么时候接收完成,而转为发送。

你可以看一下你的硬件电路图,是否在UART TO RS485芯片的收发控制脚连接了CTS_B引脚,如果有,你可以采用第二个方法。

然后,到dts目录用类似grep -r -n 'rs485' ./ 命令搜索一下,有的dts中使用了这个配置,参考它配置你的uart节点。

Have a nice day!

BR,

Weidong

Reply to this message by replying to this email, or go to the message on NXP Community

Start a new discussion in i.MX Processors by email or at NXP Community

Following Re: IMX6UL Linux下Rs485异常 in these streams: Inbox

This email was sent by NXP Community because you are a registered user.

You may unsubscribe instantly from NXP Community, or adjust email frequency in your email preferences

|

|

0 Kudos