SylixOS 里NUC970平台上SPI总线驱动移植
来源:互联网 发布:东莞优化网站 编辑:程序博客网 时间:2024/06/12 20:56
概述
本文档是移植SPI总线驱动到NUC970平台过程的总结,提供一些SylixOS SPI驱动相关的框架理解和移植心得。
SPI总线框架流程图
NUC970平台上SPI总线驱动框架如图 21所示,SPI总线框架可分为两个部分,
总线相关初始化和数据传输流程。
图21 SPI驱动流程图
技术实现
SPI总线驱动可分为两个部分:总线相关初始化和数据传输,下面对这两个部分的流程和代码编写做详细介绍。
总线相关初始化流程
SPI总线初始化主要有:SPI管脚复用、SPI控制器初始化、创建SPI操作函数集和创建SPI总线适配器。
SPI管脚复用
SPI管脚复用是将SPI总线相关的管脚使能,如:SPI片选引脚CS、SPI时钟引脚SCLK、SPI数据输出引脚MOSI和数据输入引脚MISO。如图 31所示,通过通道号uiChannel判断是初始化SPI0总线还是初始化SPI1总线的管脚复用。
图 31 SPI管脚复用
SPI控制器初始化
SPI控制器初始化主要工作是对SPI数据传输的方式和频率的设置,如图 32所示。
图 32 SPI控制器初始化函数
创建SPI操作函数集
创建包含SPI操作函数集的结构体,如图 33所示。
图 33 SPI总线函数集
创建SPI总线适配器
如图 34所示,创建SPI总线适配器是将SPI总线加入系统的总线层。pSpiFuncs是LW_SPI_FUNCS(SPI操作函数结构体)类型,每个SPI设备通过挂载在一个SPI总线适配器上,获得SPI总线操作函数。
图 34 创建SPI总线适配器
数据传输流程
如图 35所示,数据传输时,先将数据写到SPI_Tx寄存器中,通过调用__spiStartTx函数开始数据传输,等待传输完成后调用__spiStartRx函数将接收到的数据从SPI_Rx寄存器中读取出来。循环这一过程直到数据发送完成。
图 35 数据传输流程
__trySpiTransfer函数
NUC970开发板的SPI总线,可以通过配置SPI_CNTRL寄存器,设置单次传输的数据的字节数。这里以单个字节传输为例。如图 36所示。
图 36 __trySpiTransfer函数实现
__spiStartTx函数
如图 37所示,将SPI_CNTRL寄存器的"Go_Busy位"置1,数据传输开始,等到传输完成,"Go_Busy位"会被清零。所以每次数据传输,都要将"Go_Busy位"置1,等到"Go_Busy位"被清零后,再进行下一步操作。
图 37 __spiStartTx函数实现
__spiStartRx函数
如图 38所示,当调用__spiStartTx函数数据传输完成后,会调用__spiStartRx函数将接收到的数据从SPI_Rx寄存器中读取出来,到这一步SPI的一次数据传输就完成了。
图 38 __spiStartRx函数实现
测试
SPI驱动正常启动和加载的情况下,调用SPI传输函数,用示波器测量时钟和数据管脚的波形,如果传输的数据和时钟能正确匹配,说明基本完成移植。
- SylixOS 里NUC970平台上SPI总线驱动移植
- SylixOS里NUC970平台SPI总线数据传输
- SylixOS基于Nuc970平台的SD驱动移植
- NUC970平台触摸屏驱动移植
- SylixOS SPI Flash驱动移植
- imx6ul平台SylixOS I2C总线驱动开发
- SylixOS iMX6平台I2C总线驱动
- SylixOS下基于NUC970的NAND驱动
- SPI NOR 设备介绍(基于i.MX6Q平台,25VF016B型号) + SylixOS SPI总线框架
- SylixOS里CT365 I2C触控驱动移植
- SylixOS音频驱动移植
- SPI驱动之UT4412BV01上SPI驱动的移植
- DM8168平台中完成gv7601的spi总线驱动笔记
- SylixOS的LCD驱动移植
- SPI总线驱动12864
- linux SPI总线驱动
- SPI总线驱动分析
- SPI总线驱动分析
- 白话经典算法系列之六 快速排序 快速搞定
- Android Studio取消关联Git
- 获取音频文件的时长
- 初来乍到
- mac 上的chrome 提示更新 Adobe Flash 无法正常使用
- SylixOS 里NUC970平台上SPI总线驱动移植
- 126. Word Ladder II 、 127. Word Ladder(leetcode BFS+DFS)
- oracle:窗口函数
- MJExtension精髓都在这里了
- 【.Net Framework 体积大?】不安装.net framework 也能运行!?原理简介补充附带工具-2
- OSG人机交互
- C++随机数的生成
- eclipse中文件存储的编码格式设置与对编码解码的理解
- OSG环境搭建与编译