RK3588增加485软件驱动代码

背景:使用RK588源码在驱动里面增加RS485使能控制引脚,发送是IO电平输出1,发送接收IO电平输出0.
由两种方法:第一种使用IOCTL函数,由用户自由控制IO电平开启时间。第二种修改内核源码,自动开启和关闭IO电平开启时间。以下主要讲述第二种方法。

1.修改设备树文件,增加指定的IO引脚编号,比如uart4节点增加rs485-gpio:
在这里插入图片描述

2.查找串口驱动文件,rockchip 芯片使用的文件在“OK3588-linux-source/kernel/drivers/tty/serial/8250”目录中,找到8250dw.c文件,改文件与串口节点的设备树绑定。增加IO驱动代码。使用of函数“of_get_named_gpio”,得到的gpio编号非常重要,自定义一个变量保存起来,我使用rs485_value_pin,可以在节点下自己创建这个变量类型。
在这里插入图片描述

3.如果IO编号获取成功,内核调试消息里面会打印一个大于0的数字,小于0表示失败。
4.在同一目录文件下,打开“8250_port.c”文件,找到”serial8250_tx_chars“函数。这个函数主要实现串口输出的功能。首先我们需要获取输出内容的大小占用多少字节,比如通过这个指针获取”:“xmit->head-xmit->tail” ,此处ximit->head 是数据头,ximit->tail 数据尾,头尾个数相减得到数据大小。得到数据大小后,就可以延时一定时间等待串口数据发送完成。这里使用函数“mdelay()”延时毫秒,使用位置在此处:
在这里插入图片描述

这里判断了485引脚编号是否大于0,然后延时一定毫秒时间(根据数据大小延时),再将IO引脚输出为0,关闭485发送功能,这里驱动到此结束。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值