本文档记录了如何寻找CA55的Linux端存在的串口,并确定管脚,进行简易的发数据测试。因为可能部分同学不会使用到Multi-os,更多的时候是使用一个RA下位机来代替CM33的功能,所以开发板和下位机的通讯就很重要了,最常用的通信方式就是串口。起初博主在开发板原理图上只找到一个3pin的串口接口,然后百般尝试都无法通过这三个排针发出数据,所以后面就尝试找到真正的管脚。
1. 确定管脚
我们直接给开发板上电,打开串口调试工具。等待开机后在命令行输入以下指令:
cat /proc/tty/driver/rsci
可以看到命令行会输出以下信息:
root@myzr-rzv2h-ek320:~# cat /proc/tty/driver/rsci
serinfo:1.0 driver revision:
1: uart:scif mmio:0x12801C00 irq:67 tx:0 rx:0 CTS|DSR|CD
2: uart:scif mmio:0x12802000 irq:71 tx:0 rx:0 CTS|DSR|CD
3: uart:sci mmio:0x12802400 irq:75 tx:0 rx:0 CTS|DSR|CD
4: uart:sci mmio:0x12802800 irq:79 tx:0 rx:0 CTS|DSR|CD
在这里我们看到开发板的串口驱动是正常工作的,且四个串口的物理地址都已分配,可以从这里看到各个串口收发数据分别是多少。有了物理地址,我们再去查物理地址被映射到了哪些管脚上,在命令行输入以下指令:
cat /sys/kernel/debug/pinctrl/*/pinmux-pins | grep -iE "12801c00|12802000|12802400|12802800|scif"
可以看到命令行输出了以下信息:
root@myzr-rzv2h-ek320:~# cat /sys/kernel/debug/pinctrl/*/pinmux-pins | grep -iE "12801c00|12802000|12802400|12802800|scif"
pin 58 (P7_2): device 12802000.serial function sci5 group sci5
pin 59 (P7_3): device 12802000.serial function sci5 group sci5
pin 60 (P7_4): device 12802400.serial function sci6 group sci6
pin 61 (P7_5): device 12802400.serial function sci6 group sci6
pin 62 (P7_6): device 12802800.serial function sci7 group sci7
pin 63 (P7_7): device 12802800.serial function sci7 group sci7
pin 68 (P8_4): device 12801c00.serial function sci4 group sci4
pin 69 (P8_5): device 12801c00.serial function sci4 group sci4
pin 101 (SCIF_RXD): UNCLAIMED
pin 102 (SCIF_TXD): UNCLAIMED
在这里我们终于可以看到具体的管脚了。比如我们的ttySC1,对应物理地址0x12801C00,对应的管脚是P84和P85。其他串口的管脚都有了,但是博主检查了以下其他三个串口的管脚都被我的cm33给占用了,所以后面我又尝试了下,被占用的管脚是无法进行串口通信的,所以这里就使用ttySC1。
2.通信测试
查看原理图,确定P84和P85管脚位置。由于这里我们的串口模块TX的电平标准是3.3,而P85的电平标准是1.8V,1.8V的上拉不太好做,所以这里只测试开发板向电脑发送信息:

串口模块的RX和P84直连,因为模块内部有3.3V上拉,在电脑上打开串口调试助手设置波特率为9600。在开发板命令行输入以下命令:
echo "123" > /dev/ttySC1
这表示通过ttySC1这个串口打印123这个信息。然后我们立马可以在串口调试助手看到接收数据:

可以看到前三个字节刚好是十进制的49,50,51,也就是刚好对应1,2,3的ASCll码。
关于解除其他几个被占用引脚是否可以正常通信博主也没试过,大家可以自己去尝试一下。后面还可以通过这个相似的方法找到iic的管脚,后面通过相同方法查到了未被cm33占用的iic管脚是P34和P35。以上就是本文的所有内容。
