米尔STM32MP135开发板上面带有1路485和1路RS232两个扩展uart串行口。还有一路debug端口做为控制台,debug端口为TTL电平,其它都是标准电平,RS485和RS232。设备文件分别为/dev/ttySTM1和/dev/ttySTM2。从名字中可以看出皆为TTY终端设备。
首先使用USB串口电缆将RS232端口连接,要注意的是这个J19接口在开发板说明中没有描述,我是从其它的资料中找到这个扩展接口定义的。
使用stty工具查看串口设备设置。
root@myd-yf13x:~# stty -a -F /dev/ttySTM1
speed 9600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke -flusho -extproc
root@myd-yf13x:~#
默认设置为带回显终端方式,通讯速率为9600,数据位8,校验N,停止1
当然也可以通过stty工具进行修改,如:stty -F /dev/ttyS1 raw speed 115200
修改设置:速率115200,无回显,RAW原文模式通讯。
二,控制台测试串口。
先使用控制台测试一下端口通讯是否正常。
echo "Hello,World!" >/dev/ttySTM2
串口助手可以成功收到板子发来的消息。
cat /dev/ttySTM2
可以看到板子的终端收到了串口助手发过来的消息,同时串口助手也收到了“回显”
三、RS485测试以及串口编程。
RS485是主从模式的通讯方式,为半双工通讯,在通讯时需要控制485芯片的方向。这个也可以使用自动转换芯片无需考虑芯片方向切换的问题。而且485可以使用1位地址位,但是PC机没有这方面的设置。所以本次测试仍然使用8位数据通讯。米尔提供了一个485的例程。rs485_recv_send程序。编译后可以拷贝到板子上使用。
其中的程序只要思路如下:
使用ioctl设置termios结构改变uart的通讯参数。
该驱动使用的是和uart一样的驱动,485芯片的方向控制是需要在程序中外置的,没有将该引脚的编程引入驱动层的空间,只是向普通GPIO一样操作。每次发送数据都需要手工“回正”方向
ret = ioctl(req.fd, GPIOHANDLE_SET_LINE_VALUES_IOCTL, &data);
所以编程时需要注意。
测试正常通讯。
|