带有SPI接口的非接芯片开发心得
来源:互联网 发布:em10 mark iii 知乎 编辑:程序博客网 时间:2024/06/05 04:53
带有SPI接口的非接芯片开发心得
目前我们使用的非接芯片主要是通过SPI接口来实现通信的,因此本文结合非接芯片As39911和RC663对带有SPI接口的非接芯片操作做了一个总结,可供涉及相关领域的人员参考,同时欢迎与大家的讨论。同时文中也列些测试点,供项目相关人员快速定位问题、解决问题。芯片的具体应用功能不在讨论范围,主控芯片为SM32。
对于SPI接口芯片的操作问题主要归结为管脚配置、单/双工、主/从模式、8bit/16bit帧结构、时序配置、片选控制、波特率、高位/低位在前、CRC配置以及发送/接收模式配置(软件实现)。下面主要对容易出错的时序及发送/接收模式配置部分做深入探讨。
通常SPI通过4个引脚与外部器件相连,除此之外还有中断、复位信号。
●MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。从项目中的应用来看主控芯片为主设备,非接芯片为从设备。
● MOSI:主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。
● SCK:时钟信号,由主控芯片产生。
● NSS:从设备选择。
对带有SPI接口的芯片进行操作时必须进行时序的配置,主从设备必须具有相同的时序。配置原理如下图1所示。
图1 SPI 接口时序图
对时序图分析后不难得出表1。
通过查看AS3911的芯片手册如图2可以发现,它是在时钟的第二个沿(下降沿)对数据进行采样,此时数据必须保持稳定,也就是满足所谓的建立保持时间,当然这个控制器已经帮我们设好了。因此参照表1,主控芯片的SPI接口必须设为CHPA = 1,CHPL=0。
图2 AS3911 SPI接口写操作
同样的通过分析RC3911的时序如图3,可以看到对于RC663是在时钟第一个沿(上升沿)进行数据采样,同样的数据也需满足建立保持时间。参照表1,可以得到RC663的时序配置,CHPA = 0,CHPL= 0。
图3 RC663 SPI接口时序图
接下来分析As3911的SPI接口传输模式。从AS3911的芯片手册如表2可以看到AS3911的SPI接口传输模式结合芯片功能特性分为五种模式。其中包括写、读、载入FIFO、读FIFO以及直接指令模式。写模式前两个位为00,后6位为需要访问的地址位。读模式前两位为01,后6位为需要访问的地址。载入FIFO直接发送0X80,对应的读FIFO为0xBF。对直接指令模式前两位为11,后6位为需要发送的指令。
未完待续。
转载请注明出处http://blog.csdn.net/gungunchang/。
- 带有SPI接口的非接芯片开发心得
- 使用GPIO控制SPI接口的AD芯片 (转)
- 使用GPIO控制SPI接口的AD芯片//来源不详
- ZYNQ7000 芯片Linux下的SPI接口与驱动配置
- 芯片的SPI口
- ARM(LPC213x)与兼容SPI接口的芯片(MAX1247)的通信代码
- 有关DSP2812与SPI接口DA芯片的通信(AD5640,AD5682)
- DM8168的SPI接口
- Java的Spi机制心得
- Java的Spi机制心得
- STM32的SPI学习(SPI芯片为SST25VF016B)
- SPI的读写GT21L字库芯片
- MX25L1635D spi-flash芯片的读写记录
- 关于接口开发的一点心得
- 【程序】STM32使用SPI接口读取93C46存储器上的数据(非软件模拟SPI时序)
- 【转】【学】USB接口芯片D12开发的经验
- SPI接口的单线应用
- LCD的SPI接口分析
- 在active = false的情况下如何找到gameobject
- Difference between Global DB name and SID
- Android中RelativeLayout相对布局
- JavaScript-4.4函数递归之阶乘举例---ShinePans
- dg环境如何patch?
- 带有SPI接口的非接芯片开发心得
- SVN的目录结构---该怎么弄?
- iOS安全攻防(十五):使用iNalyzer分析应用程序
- PHP所有数组函数
- 【pt-px-em】有关磅、像素和em的整理
- ptrace: Operation not permitted.
- SUSE(Linux操作系统)
- php面向对象的学习
- leetcode - Merge Sorted Array