精读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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |