博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SylixOS NUC970平台SPI总线驱动移植
阅读量:6001 次
发布时间:2019-06-20

本文共 1317 字,大约阅读时间需要 4 分钟。

hot3.png

  1. 概述

    本文档是移植SPI总线驱动到NUC970平台过程的总结,提供一些SylixOS SPI驱动相关的框架理解和移植心得。

     

  2. SPI总线框架流程图

    NUC970平台上SPI总线驱动框架如图 21所示,SPI总线框架可分为两个部分,

    总线相关初始化和数据传输流程。

    图21 SPI驱动流程图

  3. 技术实现

    SPI总线驱动可分为两个部分:总线相关初始化和数据传输,下面对这两个部分的流程和代码编写做详细介绍。

  4. 总线相关初始化流程

    SPI总线初始化主要有:SPI管脚复用、SPI控制器初始化、创建SPI操作函数集和创建SPI总线适配器。

  5. SPI管脚复用

    SPI管脚复用是将SPI总线相关的管脚使能,如:SPI片选引脚CS、SPI时钟引脚SCLK、SPI数据输出引脚MOSI和数据输入引脚MISO。如图 31所示,通过通道号uiChannel判断是初始化SPI0总线还是初始化SPI1总线的管脚复用。

    图 31 SPI管脚复用

  6. SPI控制器初始化

    SPI控制器初始化主要工作是对SPI数据传输的方式和频率的设置,如图 32所示。

    图 32 SPI控制器初始化函数

  7. 创建SPI操作函数集

    创建包含SPI操作函数集的结构体,如图 33所示。

    图 33 SPI总线函数集

  8. 创建SPI总线适配器

    如图 34所示,创建SPI总线适配器是将SPI总线加入系统的总线层。pSpiFuncs是LW_SPI_FUNCS(SPI操作函数结构体)类型,每个SPI设备通过挂载在一个SPI总线适配器上,获得SPI总线操作函数。

    图 34 创建SPI总线适配器

  9. 数据传输流程

    如图 35所示,数据传输时,先将数据写到SPI_Tx寄存器中,通过调用__spiStartTx函数开始数据传输,等待传输完成后调用__spiStartRx函数将接收到的数据从SPI_Rx寄存器中读取出来。循环这一过程直到数据发送完成。

    图 35 数据传输流程

     

  10. __trySpiTransfer函数

    NUC970开发板的SPI总线,可以通过配置SPI_CNTRL寄存器,设置单次传输的数据的字节数。这里以单个字节传输为例。如图 36所示。

    图 36 __trySpiTransfer函数实现

  11. __spiStartTx函数

    如图 37所示,将SPI_CNTRL寄存器的"Go_Busy位"置1,数据传输开始,等到传输完成,"Go_Busy位"会被清零。所以每次数据传输,都要将"Go_Busy位"置1,等到"Go_Busy位"被清零后,再进行下一步操作。

    图 37 __spiStartTx函数实现

  12. __spiStartRx函数

    如图 38所示,当调用__spiStartTx函数数据传输完成后,会调用__spiStartRx函数将接收到的数据从SPI_Rx寄存器中读取出来,到这一步SPI的一次数据传输就完成了。

    图 38 __spiStartRx函数实现

  13. 测试

    SPI驱动正常启动和加载的情况下,调用SPI传输函数,用示波器测量时钟和数据管脚的波形,如果传输的数据和时钟能正确匹配,说明基本完成移植。

转载于:https://my.oschina.net/u/3249576/blog/832209

你可能感兴趣的文章
Linux如何修改和查询时区时间
查看>>
文献综述十九:基于会员通用积分的客户关系管理系统设计与实现
查看>>
activity总结
查看>>
LeetCode 870.优势洗牌(C++)
查看>>
jquery 选择器
查看>>
The secret code
查看>>
Makefile 多目录自动编译
查看>>
学习笔记:Oracle dul数据挖掘 导出Oracle11G数据文件坏块中表中
查看>>
统一Matlab下不同子图的色标colorbar
查看>>
Linux 进程间通信(二) 管道
查看>>
Ajax保留浏览器历史的两种解决方案(Hash&Pjax)
查看>>
深入浅出JQuery (二) 选择器
查看>>
CI框架 -- 驱动器
查看>>
FastMQ V0.2.0 stable版发布
查看>>
对象复制
查看>>
Mongodb内嵌数组的完全匹配查询
查看>>
MyBatis学习笔记(四) 注解
查看>>
hihoCoder #1015 : KMP算法【KMP裸题,板子】
查看>>
用sublime 3搭建php 运行环境
查看>>
主机安装
查看>>