文档章节

SylixOS NUC970平台SPI总线驱动移植

w
 wangyu123
发布于 2017/02/06 10:18
字数 819
阅读 99
收藏 0
  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传输函数,用示波器测量时钟和数据管脚的波形,如果传输的数据和时钟能正确匹配,说明基本完成移植。

© 著作权归作者所有

w
粉丝 2
博文 11
码字总数 10189
作品 0
南京
私信 提问
SylixOS SPI Flash驱动移植

1.开发环境 操作系统:SylixOS 编程环境:RealEvo-IDE3.0 开发板:MDK972 Nor Flash:EN25Q128 2.原理概述 NOR FLASH是一种常见的存储芯片,数据掉电不会丢失,支持片内执行,因此在嵌入式...

huikai309
2018/06/26
0
0
SylixOS-IgH系统平台搭建

1.参考手册 下面7个文件存放在本地服务器“\10.9.1.113.研发部9.ExchangeFolder郑磊”路径下 《RealEvo-IDE使用手册》 《SylixOS应用开发手册》 《SylixOSshell用户手册》 《SylixOS-IgH使用...

zhengleich
2018/05/15
0
0
VxWorks驱动移植至SylixOS总结

本文档描述了将VxWorks中的驱动源码快速移植至SylixOS中的方法,使用时需要结合SylixOS中的VxWorks兼容层实现。 1. 驱动注册与初始化 1.1 VxWorks中驱动注册与初始化 1.1.1 初始化函数 VxWo...

zhywxyy
2018/08/21
55
0
SylixOS上EtherCAT实现

1 EtherCAT开源协议栈介绍 目前常见开源的主站代码为RT-LAB开发的SOEM(Simple OpenSource EtherCAT Master)和EtherLab的the IgH EtherCAT® Master,SylixOS对两者都支持。其中IgH作为常用的...

Jackstraw瑞
2017/11/01
286
0
SylixOS调试方法详解——综合案例分析

1. SylixOS调试方法介绍 SylixOS实现了一个功能强大的调试stub(桩),可在设备或模拟器上在线调试应用程序,RealEvo-IDE也提供配套的调试插件。目前RealEvo-IDE既支持自动推送调试、也支持传...

Esc120
2018/06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 如果是个帅小伙你愿意和他出去吗

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 小小编辑推荐:《Ghost 》游戏《死亡搁浅》原声 《Ghost 》游戏(《死亡搁浅》原声) - Au/Ra / Alan Walker 手机党少年们想听歌,请使劲儿戳...

小小编辑
58分钟前
109
5
java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
今天
6
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
5
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
16
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部