加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

精读OSAL --我的SPI驱动

发布时间:2020-12-15 18:03:25 所属栏目:百科 来源:网络整理
导读:当我仔细地看完OSAL里HAL的SPI驱动,发觉它并不是我们常用的普通SPI驱动. 在数据前增加头,做成包的形式发数据.而我们的项目里有四外设要用SPI,而且是普通的SPI操作. 最后用DMA的方式重新构造自己的驱动.概念如下,代码就不上了,需要的MSG吧. ? 首先,我构造一个

当我仔细地看完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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读