linux – UART初始化:防止UART将RTS拉高
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – UART初始化:防止UART将RTS拉高,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1555字,纯文字阅读大概需要3分钟。
内容图文
![linux – UART初始化:防止UART将RTS拉高](/upload/InfoBanner/zyjiaocheng/965/3823595eb1ac4fcf84a006db54a4f578.jpg)
我正在为Linux上的ARM AT91SAM9260板写一个RS485驱动程序.
当我初始化UART时,RTS信号线变高(1).我想这将是并且应该是RS232操作模式中的标准行为.然而,在RS485模式下,这不是必需的.
我正在使用arm-arch部分提供的标准功能来初始化UART.因此,重要的步骤是:
at91_register_uart(AT91SAM9260_ID_US2, 3, ATMEL_UART_CTS | ATMEL_UART_RTS);
//consisting of:
// >> configure/mux the pins
at91_set_A_periph(AT91_PIN_PB10, 1); /* TXD */
at91_set_A_periph(AT91_PIN_PB11, 0); /* RXD */
if (pins & ATMEL_UART_RTS)
at91_set_B_periph(AT91_PIN_PC8, 0); /* RTS */
if (pins & ATMEL_UART_CTS)
at91_set_B_periph(AT91_PIN_PC10, 0); /* CTS */
// >> associate the clock
axm_clock_associate("usart3_clk", &pdev->dev, "usart");
// >> et voilà
正如你所看到的那样
at91_set_B_periph(AT91_PIN_PC8, 0);
RTS引脚上的上拉电阻未激活.
>为什么UART将RTS置为高电平?
只是因为这将成为标准
在RS232模式下的行为?
>它不是一个更好的标准
UART保持沉默直到
操作模式是明确设置的?
解决方法:
初始化后的高RTS信号似乎是许多平台上的标准行为.它男子气概取决于启动例程预期接口的串行操作模式.
为了防止在运行Linux的ATMEL AT91SAM9260板上出现RTS-high,必须先将UART置于正确的模式,然后再复用at91_set_X_periph()引脚并注册器件.
自Linux内核版本2.6.35起,ATMEL serial driver支持RS485模式.在此驱动程序中,在将引脚(GPIO)设置为该角色之前,已正确配置UART.
对于运行较旧Linux版本的嵌入式设备,我使用以下代码行解决了问题:
/* write control flags */
control |= ATMEL_US_RTSEN;
mode |= ATMEL_US_USMODE_RS485;
UART_PUT(uartbaseaddr, ATMEL_US_CR, control);
UART_PUT(uartbaseaddr, ATMEL_US_MR,mode);
现在,Pins可以复制他们的角色
at91_set_X_periph(RTS_PIN, 0);
内容总结
以上是互联网集市为您收集整理的linux – UART初始化:防止UART将RTS拉高全部内容,希望文章能够帮你解决linux – UART初始化:防止UART将RTS拉高所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。