我正在尝试将 GSM 模块与我的 AM1808 处理器连接。我正在使用gcc
编译器以及 UBUNTU 10.04 Lucid。
我已经配置了 UART0 的 TXD 和 RXD 引脚,但无法正确访问 RTS 和 CTS 引脚。
实际上我需要检查 RTS 和 CTS 线路是否正确通信。
所以我需要从用户应用程序访问此引脚。
我怎样才能做到这一点?
答案1
我会按大致顺序检查的事情:
- 确保您在应用程序中启用 RTS/CTS 功能。看tty_ioctl(4)有关如何执行此操作的信息。链接手册页末尾有一个检查 DTR 引脚的示例。尝试交叉编译您的代码并在知道 CTS/RTS 工作的 PC 上运行它(即 USB 到串行转换器)
检查 stty 的输出,因为它可以显示是否启用了控制设置“crtscts”以启用握手:
stty -F /dev/ttyO1
开始深入研究您的内核和引导加载程序,以验证您希望使用的引脚的多路复用器是否配置为供 UART 外设使用,而不是其他外设(即 gpio、视频等)。请参阅 TI 技术参考手册 (TRM) 或数据表,具体取决于他们为您的芯片放置多路复用器信息的位置。验证这一点的最简单方法是在从 TRM/DS 找到地址后使用“devmem2”等程序读取多路复用器寄存器。要解决此问题,您需要确定您的内核或引导加载程序是否负责多路复用器配置。有时两者兼而有之(叹气)。
- 考虑硬件问题,查看原理图。引脚真的连接了吗?
- 继续挖掘内核代码以确保平台数据设置正确。这将位于您的内核树下的某个位置(我猜“arch/arm/mach-davinci/devices-da8xx.c”)。将有许多结构来描述每个 UART。确保这些对于您正在使用的 UART 有效。此外,为了奖励积分,有时人们会在错误的位置进行修复,因此这些修复可能会被埋在内核树中的几乎任何其他地方......所以寻找那些作为最后的手段。这就是有趣的地方。
我对这个芯片并不熟悉,所以我猜测一些内核支持文件。也不确定您使用的内核版本或它来自哪里(TI 与上游)。