权智A133P 安卓10移植SPI转串WK2124驱动

这篇具有很好参考价值的文章主要介绍了权智A133P 安卓10移植SPI转串WK2124驱动。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

硬件连接示意图

权智A133P 安卓10移植SPI转串WK2124驱动,LInux嵌入式,linux,android,嵌入式硬件,嵌入式软件,开发板
主控CPU通过SPI总线与WK2XXX芯相连接。WK2XXX控制4个UART的数据收发。
其中重要的参数有CS片选线和IRQ中断引脚。

LInux串口驱动框架

权智A133P 安卓10移植SPI转串WK2124驱动,LInux嵌入式,linux,android,嵌入式硬件,嵌入式软件,开发板
当WK2XXX驱动在内核注册成功后,会在/dev目录下面生成ttysWK0,ttysWK1,ttysWK2,ttysWK3节点。上层通过open,read,write调用ttysWK。

TTY驱动架构

权智A133P 安卓10移植SPI转串WK2124驱动,LInux嵌入式,linux,android,嵌入式硬件,嵌入式软件,开发板
一般来说 tty 架构可以分成两层:一层是下层我们的串口驱动层,直接操作
WK2XXX 芯片,同时向上提供一组标准的接口,这组接口通过结构体 struct uart_ops
来实现,该结构体涵盖了驱动对串口的所有操作。还有一层是上层 tty 层,包括
tty_core、line_discipline.他们各自实现实现一个 ops 结构,用户空间通过 tty 注册的字符设备节点来访问驱动。

用户空间与驱动层之间数据交互

权智A133P 安卓10移植SPI转串WK2124驱动,LInux嵌入式,linux,android,嵌入式硬件,嵌入式软件,开发板
用户空间和驱动层之间在数据传递上并不是直接传递的。当 write()写数据时,
用户空间仅仅是把数据传递给 tty 缓冲区,然后驱动程序收到发送数据的指令,
然后按照一定的流程去发送数据;当接收数据的时候,驱动层首先把接收的数
据放入 tty 缓冲区,用户空间 read()去读数据,那么就能从 tty 缓冲区读出子串
口接收的数据。

驱动层接收和发送数据都依赖于中断。

具体的示意图如下:
权智A133P 安卓10移植SPI转串WK2124驱动,LInux嵌入式,linux,android,嵌入式硬件,嵌入式软件,开发板

驱动移植

目录结构

        modified:   drivers/spi/Kconfig
        modified:   drivers/spi/Makefile
        modified:   drivers/spi/wk2xxx_spi.c

Makefile修改:

+++ b/arch/arm64/configs/a133p_common_defconfig
@@ -327,7 +327,7 @@ CONFIG_SENSORS_SC7A20=y
 # CONFIG_LEGACY_PTYS is not set
 +CONFIG_SPI_WK2124=y
 CONFIG_GPIOLIB=y
 CONFIG_GPIO_GENERIC_PLATFORM=y
 CONFIG_AXP803_POWER=y

将WK2124编译进内核

Kconfig修改:

--- a/drivers/spi/Kconfig
+++ b/drivers/spi/Kconfig
@@ -761,6 +761,10 @@ config SPI_TLE62X0
          sysfs interface, with each line presented as a kind of GPIO
          exposing both switch control and diagnostic feedback.
 
+
+config SPI_WK2124
+       bool "wk2124 spi to uart"
+
 #
 # Add new SPI protocol masters in alphabetical order above this line
 #

设备树修改:
设备树主要修改两个个GPIO,分别是cs-gpios和irq_gpio。
权智A133P 安卓10移植SPI转串WK2124驱动,LInux嵌入式,linux,android,嵌入式硬件,嵌入式软件,开发板
根据硬件原理图可以知道IRQ的GPIO为PH14。CS连接到SPI1_CS上面去了。
权智A133P 安卓10移植SPI转串WK2124驱动,LInux嵌入式,linux,android,嵌入式硬件,嵌入式软件,开发板
主控SPI_CS的GPIO为PD10。
设备树节点修改如下:

&spi1 {
	status = "okay";
	max-freq = <48000000>;
		wk2xxx_spi: wk2xxx_spi@00{
		status = "okay";
		compatible = "wkmic,wk2xxx_spi";
		reg = <0x00>;
		spi-max-frequency = <10000000>;
		reset_gpio = <&pio PB 3 1 1 1 1>;
		irq_gpio  = <&pio PH 14 6 0 0 0>;
		cs-gpios = <&pio PD 10 1 1 0 0>;
	};
};

1、status:如果要启用 SPI,那么设置为 okay,如不启用,设置为 disable
成都为开微电子
2、wk2xxx_spi@00:由于硬件使用的是 SPI1 的 cs0 引脚,所以设置为 00.如果使用
cs1,则设置为 01
3、compatible:这里的属性必须与驱动中的结构体:of_device_id 中的成员
compatible 保持一致。这个是 SPI 驱动匹配的关键。
4、reg:此处与 wk2xxx_spi@00:保持一致。此处设置为:00
5、spi-max-frequency:此处设置 spi 使用的最高频率。wk2xxx 芯片 spi 最高支
持 10000000。
6、reset_gpio:该选项在 SPI 驱动当中不是必须的。该 gpio 和 WK2xxx 芯片的复位
引脚相连,用于控制芯片的复位。根据实际使用的 gpio 去修改。
7、irq_gpio: 该 gpio 和 wk2xxx 芯片的 IRQ 引脚相连,用于接收 wk2xxx 芯片传递
来的中断信号。估计具体使用的 GPIO 去修改。
8、SPI 的工作模式设置,默认工作在 0 模式,所以在 dts 中没有单独设置。

驱动测试

权智A133P 安卓10移植SPI转串WK2124驱动,LInux嵌入式,linux,android,嵌入式硬件,嵌入式软件,开发板
在电脑上面用串口助手,通过RS232与开发板串口连接
然后打开串口,用echo发数据到串口,看串口工具能否收到,如果能正常收到则说明驱动已经移植成功。

参考文档:https://blog.csdn.net/qq_29890089/article/details/120064117文章来源地址https://www.toymoban.com/news/detail-603888.html

到了这里,关于权智A133P 安卓10移植SPI转串WK2124驱动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • U8g2库的STM32硬件SPI(DMA)移植教程(HAL、OLED显示、四线SPI、DMA)

    本文教你把U8g2图形库移植到STM32上,基于STM32的硬件SPI、CubeMX U8g2库Github网址:https://github.com/olikraus/u8g2 U8g2库CSDN镜像网址:https://gitcode.net/mirrors/olikraus/u8g2?utm_source=csdn_github_accelerator 硬件准备:STM32C8T6(STM32系列芯片)、0.96寸OLED(128×64)、J-Link(或其他) 引脚连接: 出自此

    2024年02月09日
    浏览(50)
  • rk3566-安卓11-千兆网卡 rtl8211f 移植

    phy 常用的接口有两种 RGMII 和 RMII, 这两种对应的物理接口有 6 中如下所示. 首先需要根据原理图确定是哪种接法, 根据接法对应的 name 在文档 Rockchip_Developer_Guide_Linux_GMAC_Mode_Configuration_CN.pdf 中查找对应的配置. 1.1 RGMII 模式 该模式需要关注的硬件接口 mac: GMACX_MCLKINOUT , ETHx_REFCL

    2024年01月23日
    浏览(66)
  • 在f1c100s芯片上移植spi网卡enc28j60的linux驱动

    我个人与全志的芯片颇有故事。在我还是一个不懂事的高中生时,我看到荔枝派的官方文档,顿时被这小小的板子给吸引住。点开文档的初见: 荔枝派Nano(下面简称Nano)是一款精致迷你的 Arm9 核心板/开发板,可用于初学者学习linux或者商用于产品开发。 Nano 在与SD卡相当的

    2024年02月11日
    浏览(64)
  • 详细讲解移植u-boot.2022.10版本移植到开发板基本方法

     大家好,我是ST​。​ 今天给大家讲一讲如何将u-boot.2022.10版本移植到imx6ull开发板上。 环境 选项 内容 编译主机 UbuntuLTS 18.04 目标板 ATK I.MX6ULL(512MB DDR3 + 8GB EMMC) u-boot版本 2022.10 交叉编译工具链 gcc-linaro-7.5.0-2019.12-i686_arm-linux-gnueabihf 一、u-boot编译环境准备 1.u-boot源码包下载

    2024年02月11日
    浏览(53)
  • 安卓玩机搞机----移植第三方rom修复 第三方GSI系统修复bug综合解析【一】

    很多朋友热衷与刷写第三方非当前机型官方系统的rom。和刷写第三方gsi等等。例如 米系列机型刷写Flyme 一加机型刷写miui oppo刷写gsi等等。 很多友友也会尝试自己移植第三方rom。但此类操作最大的问题在于修复可以开机后的bug,今天的教程综合说明下这类修复思路。资源步骤

    2024年02月07日
    浏览(87)
  • 力扣133. 克隆图

    思路: 使用一个哈希表存储已经被克隆过的节点,key 为原节点,value 为克隆的节点; 从原节点开始遍历,如果已经被克隆过,则回到其克隆节点; 否则,克隆该节点,并存入哈希表中; 然后,根据其邻居节点依次递归遍历;

    2024年02月04日
    浏览(38)
  • 133. 克隆图

    给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。 图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。 class Node {     public int val;     public ListNode neighbors; }   测试用例格式: 简单起见,每个节点的值都和它的索引相同。例如,第一

    2024年02月14日
    浏览(38)
  • leetcode做题笔记133. 克隆图

    给你无向  连通  图中一个节点的引用,请你返回该图的 深拷贝(克隆)。 图中的每个节点都包含它的值  val ( int ) 和其邻居的列表( list[Node] )。   测试用例格式: 简单起见,每个节点的值都和它的索引相同。例如,第一个节点值为 1( val = 1 ),第二个节点值为

    2024年02月08日
    浏览(40)
  • Win10安卓子系统安装教程

    win10安卓子系统和win11子系统的安装一样,都必须要安装 适用于 Android ™的 Windows 子系统设置 的软件。 (软件链接: https://pan.baidu.com/s/1rlj9KGdKXKVmuFolNroYfg 提取码: 3p74 ) 下载完成并解压后,找到文件夹中的 Run.bat 程序 点击运行,会出现以下画面 安装成功后会出现 Google Play商店

    2024年01月16日
    浏览(56)
  • 安卓10下愉快的使用BurpSuite抓包

    最近一直在做一些app相关的渗透测试,发现安卓模拟器环境总是会出现一些奇奇怪怪的问题,而且使用起来很不方便,就买了一台安卓机,于是便有了这边文章,记录下过程,也给可能会遇到同样问题的各位师傅提前踩坑,这里感谢T师傅在我遇到问题时给了我很多帮助。 科

    2024年02月15日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包