完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
首先底层确保rk3288的板子串口通讯是ok的,即能实现自发自收。操作方法简单粗暴:通过用镊子短接串口TX和RX,然后cmd操作echo和cat对应串口节点即可。 1.adb使用ls -l ttyS*命令显示如下,这些就是对应的串口节点,uart0对应/dev/ttyS0,uart1对应/dev/ttyS1,其他以此类推。 crw-rw----. 1 root dialout 4, 64 5月 17 02:24 /dev/ttyS0 crw-rw----. 1 root dialout 4, 65 5月 17 02:24 /dev/ttyS1 crw-rw----. 1 root dialout 4, 66 5月 17 02:24 /dev/ttyS2 crw-rw----. 1 root dialout 4, 67 5月 17 02:24 /dev/ttyS3 2.使用cat /proc/tty/driver/serial 130|rk3288:/ # cat /proc/tty/driver/serial serinfo:1.0 driver revision: 0: uart:16550A mmio:0xFF180000 irq:37 tx:0 rx:0 1: uart:unknown port:00000000 irq:0 2: uart:unknown port:00000000 irq:0 3: uart:16550A mmio:0xFF1B0000 irq:38 tx:0 rx:0 4: uart:unknown port:00000000 irq:0 我们发现串口0和3的uart值时16550A,tx值为0,rx值也为0,因此我们本机有2个串口启用,是串口0和3,即ttyS0,ttyS3,我这里使用的是ttyS3来调试。 3、串口屏模组分辨率:240X320 4、注意:如果VCC是3.3V输入时,需要将背面的电阻R4短路、R2开路。模块出厂默认的为5.0V供电输入。 所以如果是使用SunStudio工具给集成屏下指令的话,连接串口跟PC机连接的,集成屏要跳电阻到5v供电, 我们的板子是3.3v串口供电,所以需要跳电阻到3.3v。具体参看文档 5、使用SunStudio工具注意事项: (1)、串口板的供电要确保是5v,串口板的TX和RX跟屏的TX和RX交叉连接,即屏TX和串口板RX连接,屏RX和串口板TX连接,参考《集成串口屏应用文档.pdf》文档,但是TX和RX的连接不能按照文档接,切记。 (2)、串口板直接和PC机连接,然后查看串口端号,SunStudio工具具体操作参考《软件使用说明.pdf》文档。 (3)、更多的指令《参考集成串口屏指令集.pdf》文档。 6、集成屏接到rk3288板子的时候要将屏供电跳电阻到3.3v,因为板子只能供电到3.3v。 遇到的问题点: 1、背光不亮,原因:背光电压没给对,如果VCC是3.3V输入时,需要将背面的电阻R4短路、R2开路。模块出厂默认的为5.0V供电输入。我这里接到板子上只供3.3v,而集成屏默认供电电压是5v,所以 背光不亮; 2、PC的串口端号没选对,导致识别到的串口错误; 3、使用SunStudio工具发送指令不成功,数据接收区没有返回ok的字符串。原因:错信文档tx和rx没有交叉接,交叉接之后,发送指令ok。 4、接上rk3288板子的时候,tx和rx不用交叉连接,否则发送失败。 5、可以通过stty工具指令设置rk3288板子串口的波特率,具体可百度,这里波特率设置成115200,因为串口屏的使用说明默认波特率就是115200: busybox stty -F /dev/ttyS0 -a //查看串口参数,查看串口0(/dev/ttyS0)当前的参数,包括波特率、数据位等。 stty -F /dev/ttyS0 ispeed 115200 ospeed 115200 cs8 //该命令将串口1(/dev/ttyS0)设置成115200波特率,8位数据模式。一般情况下设置这两个参数就可以了,如果显示数据乱码,可能还需要设置其它参数,使用man查看stty其它设置选项。 busybox stty -F /dev/ttyS0 speed 115200 cs8 -parenb -cstopb //115200波特率 8数据位 1停止位 无校验位 cat /dev/ttyS3 //接收串口节点/dev/ttyS3发出的数据 echo “xxxx” > /dev/ttyS3 //发送,xxxx表示要写入串口节点/dev/ttyS3的内容 6、串口操作采用UNIX类似的方式,打开/关闭/发送/接收等基本操作采用类似文件系统的方式进行,而一些属性的设置和控制则使用termios来进行。 串口对应的设备文件名为”/dev/ttyS3”。
fd = open(“/dev/ttyS3”, O_RDWR); 如果只发送数据,可以使用O_WRONLY, 如果只接收数据,可以设置成O_RDONLY。
close(fd);
ret = read(fd, buf, 100); //或者read(fd, buf, sizeof(buf); 串口默认的打开方式是非阻塞的,因此本函数只是接收缓冲中的数 据,而并非直接操作IO。 如果缓冲中有接收到的数据,那么本函数将返回实际接收到的数据 长度,当然不会超过指定的100字节。 如果缓冲中没有数据,那么将返回0。 如果接收失败,那么将返回-1,错误代码放在errno中。
ret = write(fd, buf, 100); write(fd, buf, sizeof(buf)); 返回值表示实际发送的数据长度。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于米尔瑞芯微RK3576核心板/开发板的人脸疲劳检测应用方案
533 浏览 0 评论
803 浏览 1 评论
700 浏览 1 评论
1926 浏览 1 评论
3171 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 13:50 , Processed in 0.674457 second(s), Total 73, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号