RK3288_Android7.1调试uart串口屏

首先底层确保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”。

  1. 打开串口

fd = open(“/dev/ttyS3”, O_RDWR);

如果只发送数据,可以使用O_WRONLY, 如果只接收数据,可以设置成O_RDONLY。

  1. 关闭串口

close(fd);

  1. 接收数据

ret = read(fd, buf, 100); //或者read(fd, buf, sizeof(buf);

串口默认的打开方式是非阻塞的,因此本函数只是接收缓冲中的数

据,而并非直接操作IO。

如果缓冲中有接收到的数据,那么本函数将返回实际接收到的数据

长度,当然不会超过指定的100字节。

如果缓冲中没有数据,那么将返回0。

如果接收失败,那么将返回-1,错误代码放在errno中。

  1. 发送数据

ret = write(fd, buf, 100); \write(fd, buf, sizeof(buf));

返回值表示实际发送的数据长度。

你可能感兴趣的:(Android驱动开发,RK系列驱动开发)