wk2124是一个通过spi扩充为4路串口的模块,在嵌入式设备上能充分利用资源,我在rk3399和rv1126上移植了wk2124,比较容易,我想它在其他linux平台使用起来也是可以的。
- 设备树添加
&spi0 {
status = "okay";
max-freq = <48000000>; /* spi internal clk, don't modify */
spi_wk@20 {
compatible = "wkmic,wk2124spi";
reg = <0>;
spi-max-frequency = <10000000>;
poll_mode = <0>;
type = <0>;
enable_dma = <0>;
irq_gpio = <&gpio2 RK_PD2 GPIO_ACTIVE_HIGH>;
//irq_gpio = <&gpio4 RK_PC5 GPIO_ACTIVE_HIGH>;
};
};
关键配置解释:
status = "okay"; //激活
spi_wk@20 //spi_wk这个随意写,没有关系,我认为@后的20为这个设备在spi线上的地址,或者叫id,不冲突就可以
compatible = "wkmic,wk2124spi"; //驱动匹配的名字,必须一致
reg = <0>; //记不清了,写0即可(好像是片选,scl连接的spi的片选0脚就写0,片选1脚就写1)
irq_gpio = <&gpio2 RK_PD2 GPIO_ACTIVE_HIGH>; //这是wk2124的中断脚,需查看芯片手册对应
还有就是wk2124是工作在spi的0模式下,上面的配置没有写出,即为默认0模式
-
驱动
驱动可以从为开官网,或者网上自行下载,下载的驱动可能有错误,修改的不多
我编译使用的wk2124驱动 -
波特率支持
wk2124最大可以4路uart,每路uart支持最大2M波特率,但是需要使用不同的晶振,如果要使用2M波特率,需要使用5v,替换32M晶振,驱动波特率的寄存器值要从新计算,这样就可以了,改起来也比较容易。 -
调试技巧
wk2124的调试比较简单,主要是确认wk2124的电压和输入晶振是否正常,不要量片选scl和clk,这个是量不到的,这个只有在发送数据的时候才会有信号;如果最后软件没问题,硬件也觉得没问题还是起不来,可能就是主cpu出问题了(我就遇到了,折磨好久)。
软件测试方法:
在驱动加载后,首先执行下面的命令,这个命令在串口0有数据的时候打印出来
#cat /dev/ttysWK0
然后另开一个终端
#echo "asdfasfsdf" > /dev/ttysWK0
给串口发送数据,正常情况下是收不到的,需要短接tx rx就可以了。
当然也可以使用代码来控制串口
wk2124串口应用测试程序