而发送多数据的接口就可以采用dcbsp_spi_sendbyte函数来逐字节发送完成。
另外接收数据的接口,同样参考着字节发送接口的思路,数据的接收过程也是“踩”着SPI接口时钟信号SCLK的“节拍”逐个bit位传输,这个过程主机继续提供SCLK,然后读取MISO信号的电平,再将读到的电平逐bit缓存在一个变量里:
就这样,利用GPIO进行电平的输出的读取,实现了SPI接口的部分时序。这些接口的内部实现过程,因人而异、因平台变化而微调,但是对外接口不动,对上层应用来说,这就是同一个接口同一个东西,上层的应用层程序改动就很小了。
对于每次移植,BSP层提供了一定架构接口,层次清晰改动小,所以对于一个嵌入式开发者而言,写好BSP层也很重要。
总结,本文主要想分享的是设计嵌入式软件时,分出BSP层,作为应用和驱动的中间层,以便于在项目移植过程中,应用的完美匹配。文中的代码未完,关于驱动类的代码,其执行结果必须在示波器等仪器下观测,仍需确认执行的效率和时序的实现效果!
关于模拟SPI的BSP层完善的设计,敬请期待后文更新!