侵权投诉
搜索
更多>> 热门搜索:
订阅
纠错
加入自媒体

嵌入式硬件通信接口协议-SPI(二)分层架构设计模拟接口

2019-01-04 09:40
掘芯
关注

其中用到的管脚定义,是在完成原理图或者完成原型机验证时,基本就确定了管脚的使用,因此管脚的定义一般的都是放在BSP层的头文件中。这样更便于移植和开发。

数据发送时,先写发送一个字节的数据,数据是“踩”着SPI接口时钟信号SCLK的“节拍”逐个bit位发送出去,因此在发送数据的时候也是需要主机操作时钟信号SCLK和数据信号MOSI:

SPI的数据发送接口dcbsp_spi_sendbyte函数实现了将1个字节的数据通过GPIO输出,实现了SPI接口的时序,其中关键的是SCLK信号输出、1字节数据的移位输出、SCLK信号做延时输出脉冲。

而发送多数据的接口就可以采用dcbsp_spi_sendbyte函数来逐字节发送完成。

另外接收数据的接口,同样参考着字节发送接口的思路,数据的接收过程也是“踩”着SPI接口时钟信号SCLK的“节拍”逐个bit位传输,这个过程主机继续提供SCLK,然后读取MISO信号的电平,再将读到的电平逐bit缓存在一个变量里:

就这样,利用GPIO进行电平的输出的读取,实现了SPI接口的部分时序。这些接口的内部实现过程,因人而异、因平台变化而微调,但是对外接口不动,对上层应用来说,这就是同一个接口同一个东西,上层的应用层程序改动就很小了。

对于每次移植,BSP层提供了一定架构接口,层次清晰改动小,所以对于一个嵌入式开发者而言,写好BSP层也很重要。

总结,本文主要想分享的是设计嵌入式软件时,分出BSP层,作为应用和驱动的中间层,以便于在项目移植过程中,应用的完美匹配。文中的代码未完,关于驱动类的代码,其执行结果必须在示波器等仪器下观测,仍需确认执行的效率和时序的实现效果!

关于模拟SPI的BSP层完善的设计,敬请期待后文更新!

★★★★★推荐文章

《嵌入式硬件通信接口-使用RingBuffer处理数据(二)详细设计过程》

《嵌入式硬件通信接口-使用RingBuffer处理数据(一)》

《【嵌入式编程】平台大小端存储差异解决办法》

《快速开发MQTT(一)电子工程师眼中的MQTT》

《快速开发MQTT(二)初识MQTT》

《MQTT客户端搭建-最清晰的MQTT协议架构》

《MQTT服务端搭建-最快方式验证自己开发的客户端》

★★★★★相似文章

《嵌入式硬件通信接口协议-UART(五)数据包设计与解析》

《嵌入式硬件通信接口协议-UART(四)设计起止式的应用层协议》

《嵌入式硬件通信接口协议-UART(三)快速使用串口及应用》

《嵌入式硬件通信接口协议-UART(二)不同电气规范下的标准》

《嵌入式硬件通信接口协议-UART(一)协议基础》

《嵌入式硬件通信接口协议-SPI(一)协议基础》

★★★★★扩展阅读

《【硬件电路】AltiumDesigner18规则检查含义》

《【硬件电路】N沟道、P沟道MOS管基本原理与应用案例》


<上一页  1  2  
声明: 本文由入驻维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。

发表评论

0条评论,0人参与

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

工控 猎头职位 更多
文章纠错
x
*文字标题:
*纠错内容:
联系邮箱:
*验 证 码:

粤公网安备 44030502002758号