Firefly-RK3399 加入WK2124驱动笔记

本文详细介绍了Firefly-RK3399开发板上使用WK2124扩展4串口的功能、WK2124芯片特性、驱动的连接示例、框架和内容,以及如何将WK2124驱动编译进Linux内核和处理常见问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、Firefly-RK3399平台简介

        目前我是用的是Firefly-RK3399这款开发板。作为Firefly新一代的顶级开源平台,Firefly-RK3399功能强大。具体情况参考Firefly-3399开发板信息

       实际上开源主板AIO-RK3399J(AIO-3399J开发板信息)中是直接有使用WK2124这款芯片,作为扩展串口的芯片。

2、WK2124简介

        WK2124是WK推出的一款SPI扩展4串口芯片,该芯片功能强大。支持10M设置更高的SPI接口速率,每个子串口独立,可以设置不同的波特率和数据格式;每个子串口支持最高2M的波特率,每个子串口都有独立的256Byte的硬件接收FIFO和256Byte的发送FIFO。合理使用该芯片,实际上可以扩展出更多串口,比如4、8、12、16甚至更多的串口。

3、WK2124驱动简介

         从WK(为开)可以获得该芯片的驱动代码和一些其他相关资料。

目前我做测试的用的是如下的代码:wk2xxx_spi.c   v2.4

     1)、 硬件连接示意图

       

         (1)   WK芯片作SPI从设备和CPU端的主SPI需要连接的信号有CS信号(此信号不能一直拉低,需要用主SPI的CS信号控制)、CLK信号、MOSI信号、MISO信号,具体连接方式如上图。

         (2)、IRQ信号为WK芯片的中断输出信号,需要连接到CPU具有外部中断功能的GPIO上。IRQ引脚外部需要加上拉电阻。

        (3)RST作为复位引脚,在SPI拓展4串口的时候,可以不用连接到CPU.直接使用阻容复位电路。

  2)、驱动基本框架

             驱动框架示意图 ​​​​​​​:

(1)、WK驱动工作在linux 内核层,向上提供4个串口设备节点供应用层用户调用。也就是说WK驱动注册成功以后,在/dev/ 目录下会生成 ttysWK0、ttysWK1、ttysWK2、ttysWK3  共4个串口设备节点,应用层就可以按照操作普通串口节点的方式操作。

(2)、WK驱动需要和WK芯片进行数据交互,数据交互是通过SPI总线进行的,所以WK驱动会调用SPI总线驱动接口进行数据收发。

3)、驱动内容

       驱动具体的内容和介绍,参考为开提供的移植手册。

       驱动源码:

4、WK2124驱动和内核一起编译

       (1)在内核源代码加入WK2124驱动源码

                  在内核源码目录加入WK2124的驱动,并修改驱动源代码的文件名为spi-wk2xxx.c

如下图:

通常在Firefly-RK339的SDK下面,都会有入上图的文件,但是这个驱动是比较老的驱动,只需要用最新的驱动去代替就可以。

(2)修改SDK目录/kernel /drivers/spi/  下的配置文件和makefile

       1、在Kconfig里面加入:

        config SPI_WK2XXX
                    tristate "wk2xxx Spi Switch Uart"
                    depends on SPI
                    help
                              Say Y to get the third party encryption service.

        如下图:

                 (2)修改makefile

如下图,在Makefile的结尾加入:

        obj-$(CONFIG_SPI_WK2XXX)                += spi-wk2xxx.o

      

       需要注释掉上图绿色的地方。这个应该是firefly增加的一个和编译相关的程序,现在不需要了。

(3)  make menuconfig

       将该驱动选择编译进入内核。

(4)修改DTS

            a、修改rk3399-firefly-port.dtsi

          在spi1节点中加入:

          

  b、修改rk3399-firefly.dts

     

其实上面的两个也可以合并在一起。只是为了rkfirefly-rk3399和其他一些开发平台兼容性更好适配,才分开写的。

   (5)、编译并下载镜像、测试驱动

      镜像加载完成以后,我们可以在/dev/ 下看见设备节点,如下图:

5、常见问题答疑

        1)由于WK2124的驱动可以看成是一个SPI的设备驱动,所以该驱动依赖于SPI总线驱动。如果总线驱动没有加载,那么WK2124的驱动也是没有办法加载的。

        2)由于驱动在加载的时候,驱动会去读取芯片寄存器GENA,如果默认值不对,那么驱动就会停止加载。所以如果SPI上没有芯片或者SPI读写操作还有问题,那么驱动是加载不了的。

        3)中断相关,由于收发数据依赖于中断信号,如果中断信号有问题,那么收发数据是没有办法进行,但是打开串口不受影响。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值