精读OSAL --我的SPI驱动

来源:互联网 发布:全国最好的专科 知乎 编辑:程序博客网 时间:2024/05/02 02:30

当我仔细地看完OSAL里HAL的SPI驱动,发觉它并不是我们常用的普通SPI驱动.

在数据前增加头,做成包的形式发数据.而我们的项目里有四外设要用SPI,而且是普通的SPI操作.

最后用DMA的方式重新构造自己的驱动.概念如下,代码就不上了,需要的MSG吧.

 

首先,我构造一个全局的链表,每一个SPI操作都是先写到链表.

 

其次,考虑到SPI的通信方式,就不实现读写操作,只实现一个交换操作.

如读FLASH,就先将地址写入数据缓冲区的相应位置,然后就发送..

 

因为是DMA方式,每发送完一个链表项中的数据就进一次dma的中断,在中断里

向HAL层设置一个HAL_SPI_EVENT事件.

 

在HAL响应这个HAL_SPI_EVENT事件时,就向调用交换操作函数的层发送一个带事件的消息.

这个层解开消息自己处理.

 

改动地方:

DMA的中断函数;

HAL的driver

OSAL的comdef

原创粉丝点击