目录

RK3568测试

RK3568测试

作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生在读,研究方向无线联邦学习

擅长领域:驱动开发,嵌入式软件开发,BSP开发

作者主页:

文章收录专栏: ,本专栏为rk3568驱动开发学习记录

欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖

RK3568测试(RS232/RS485/CAN/继电器/三路LED/蜂鸣器)

RS232测试

设备树如下

&uart3{
        dma-names = "tx", "rx";
        pinctrl-names = "default";
        pinctrl-0 = <&uart3m1_xfer>;
        status = "okay";
};

&uart4{
        dma-names = "tx", "rx";
        pinctrl-names = "default";
        pinctrl-0 = <&uart4m1_xfer>;
        status = "okay";
};

在/dev目录下的ttyS3和ttyS4为两路RS232设备,使用microcom 命令可以操作232串口。具体测试如下

将两个232设备的RX和TX口用杜邦线进行连接,如下图所示

https://i-blog.csdnimg.cn/blog_migrate/85b7c426fb2a579ca1417885f28030fe.png#pic_center

连接好之后我们在设备1和设备2上均输入

microcom /dev/ttyS3 -s 115200

测试结果

https://i-blog.csdnimg.cn/blog_migrate/c9b722d080ba86df0014d129e1ed80e4.png#pic_center

https://i-blog.csdnimg.cn/blog_migrate/a3514cbf72f25441b8e0fc1a0b6246e0.png#pic_center

由于microcom没有回显,所以看不到自己发送的是什么,但是接受的结果是没错的

RS485测试

设备树如下

&uart9 {
        pinctrl-names = "default";
        pinctrl-0 = <&uart9m1_xfer &rs485_ctrl>;
        status = "okay";
};

//在rk3568-pinctrl.dtsi下加入
rs485 {
        rs485_ctrl: rs485-ctrl {
        rockchip,pins =
                <4 RK_PD2 RK_FUNC_GPIO &pcfg_output_low>;
        };
};

因为RS485是半双工的,所以要么先测接收功能要么测发送功能,从原理图上可以看到,接受与发送功能的切换是GPIO4_D2来控制的,默认情况是接收功能,我们可以利用gpioset命令拉高该gpio让其工作在发送模式

https://i-blog.csdnimg.cn/blog_migrate/024d252a3f8b394be2e6e7fa01099d66.png#pic_center

测试接受功能

如图所示,利用TTL转RS485模块来作为另外一台RS485设备,连线如下图所示

https://i-blog.csdnimg.cn/blog_migrate/7bd276c9a89ad552bf9e42f8e0e9628e.png#pic_center

https://i-blog.csdnimg.cn/blog_migrate/05686c5e9e40dae8139a70e348425288.png#pic_center

测试发送功能

将控制引脚拉高电平,输入如下命令

gpioset 4 28=1

https://i-blog.csdnimg.cn/blog_migrate/f7d929c4637b8776b2d8fbe92b055533.png#pic_center

CAN测试

设备树如下

&can0 {
        compatible = "rockchip,can-1.0";
        assigned-clocks = <&cru CLK_CAN0>;
        assigned-clock-rates = <150000000>;
        pinctrl-names = "default";
        pinctrl-0 = <&can0m1_pins>;
        status = "okay";
};

&can1 {
        compatible = "rockchip,can-1.0";
        assigned-clocks = <&cru CLK_CAN1>;
        assigned-clock-rates = <150000000>;
        pinctrl-names = "default";
        pinctrl-0 = <&can1m1_pins>;
        status = "okay";
};

我们可以用ifconfig -a来查看can的数量,如下图所示

https://i-blog.csdnimg.cn/blog_migrate/aa7aa2995bdcb973c5997a142c514ab6.png#pic_center

这里我们测试can1的收发功能,can0与之完全相同

首先我们将两个can设备利用杜邦线进行连接,连接如下图所示

https://i-blog.csdnimg.cn/blog_migrate/58b986d65baba32f5a2e4e0e6cdca412.png#pic_center

连接好之后,我们需要对can1进行配置,利用ip命令

ip link set can1 down //关闭 can 网络
ip link set can1 up type can bitrate 800000 //设置 can1 的波特率为 800kbps,can 网络波特率最大值为 1mbps
ip link set can1 up type can //打开 can 网络

设置好之后,我们上图所示中的设备1作为接受方,设备2作为发送方

在设备1上输入

candump can1

在设备2上输入

cansend can1 123#01020304050607

结果如图所示

https://i-blog.csdnimg.cn/blog_migrate/25288bb0d57dc2f8a16aa21e952fca80.png#pic_center

https://i-blog.csdnimg.cn/blog_migrate/5b6f2a1a8c07aa1cb2ebaccd1a74ea5f.png#pic_center

继电器测试

开发板上有两路继电器

https://i-blog.csdnimg.cn/blog_migrate/403791c15096ef4f12a94facf4391a9b.png#pic_center

利用gpioset来控制继电器的开与关,当我们设置这两个gpio的电平时会听到继电器发出“咔嚓”的声音,此时证明继电器是正常的。

例如输入

gpioset 3 28=0
gpioset 3 28=1

三路LED和Buzzer引脚测试

https://i-blog.csdnimg.cn/blog_migrate/e0bfa9780284ea1d1f94149c12ca77f8.png#pic_center

这里的测试只要就是对这些gpio进行配置即可,利用gpioset来控制高低电平

注意:这四个gpio在设备树中可能会被其他设备所占用,导致不能操作gpio,所以要查看哪些设备占用着这几个gpio需要屏蔽掉这些设备。

测试方法

由于这四个引脚都是用MOS管控制的开漏输出,所以我们需要去测试MOS管的栅极看看是否是3.3V电平

规则:

GPIO输出1的时候,对应的栅极是0V

GPIO输出0的时候,对应的栅极是3.3V

利用万用表,将万用表调到直流电压20V这一档,这四个模块对应的三极管如下图所示,利用gpioset来控制四个gpio的高低电平,看看是否符合上述规则。

https://i-blog.csdnimg.cn/blog_migrate/eb340039617ee75fba1de4443b0cde06.png#pic_center