7

全志V3S嵌入式驱动开发(串口驱动)

 1 year ago
source link: https://blog.csdn.net/feixiaoxing/article/details/131017656
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

全志V3S嵌入式驱动开发(串口驱动)

嵌入式-老费 已于 2023-06-03 16:48:33 修改 115

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        全志V3S支持三个串口,但是因为其中UART1的pin和其他功能是复用的,所以这个时候一般只用UART0和UART2。当然我们在linux开发必须要进行调试,这就涉及到shell命令,因此就会占用一个串口UART0,所以如果有外接设备需要对接的话,一般用UART2。

1、电路图分析

f9e02e3b7c70478ab6b25e2f3a327e3a.png

         如上述电路图所示,分别有两组UART,一个是UART0,一个是UART2。连线的时候,通常10、12、14一组,2、4、7算成一组,这样就基本没有问题了。GND一定要连接上。

2、添加设备树配置

        设备树当中,默认UART0是配置好的,不然在启动启动的时候,也看不到那么多的日志信息。只是如果需要使用UART2的话,那么需要分别在sun8i-v3s.dtsi添加,

        在sun8i-v3s-licheepi-zero.dts添加,

        有的同学也许会说,既然只使用到了UART2,那么UART1相关的配置不添加,行不行。我的实验结果告诉大家,不行。

        配置文件修改后,大家把配置重新编译一下,就可以生成新的dtb文件,拷贝到sd卡即可。代码部分本身zImage里面就有,这里就不需要重新编译了。

3、驱动文件

           细心一点的同学可能会在sun8i-v3s.dtsi看到这些内容,这就是将来UART驱动所要读取的信息,包括了兼容设备、寄存器、中断、时钟、复位、状态等数据。

        根据前面的经验,我们可以通过全局搜索dw-apb-uart找到对应的驱动文件。当然,也可以到内核drivers/tty目录下,借助于find . -name "*.o"的方法,看看哪一个驱动最像我们要找的那个文件。简单查看下,发现有一个drivers/tty/serial/8250/8250_dw.c最像,因为它也包含了一个dw字母。

        看了一下驱动末尾的几段代码,应该就是这个文件。有兴趣的同学可以通过调试和打印,加深一下印象。

4、准备测试代码、开始测试

        有了编译好的dtb文件,重新烧录后,下面就可以开始测试了。我们的测试方法就是,准备一个ttyS2的读写程序,此外再准备两个usb2ttl,一个用作shell输入,一个用作效果验证。网上关于linux串口编程的代码很多,可以找一个适合我们的查看下即可,

        这个代码的内容比较简单,主要的部分就是回显。用xshell打开两个串口,接着用arm-linux-gnueabihf-gcc编译好程序之后,通过python http & wget下载到开发板,重新chmod +x之后就可以开始运行了。不出意外的话,就能在/dev/ttyS2的串口下面实现数据的回显功能了。

95ed288fadba45c591ca0a593b37dc02.png

         市面上关于串口的设备还是很多的,比如电池、gps、运动控制、二维码结果输出等等,很多设备都是这种232接口的设备,所以小伙伴多多掌握linux下面232如何编程还是大有裨益的。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK