对STM32 HAL库的一些思考(一)SPI通信的数据格式问题

本文探讨了STM32 HAL库在SPI通信中发送16位数据的问题。虽然STM32的SPI数据寄存器DR为16位,但HAL库的函数通常接受8位数据指针。通过C语言的类型转换,可以理解HAL库如何处理16位数据。示例代码展示了解决方法,并建议在实际应用中谨慎操作,尤其是涉及Flash或E2PROM时。
摘要由CSDN通过智能技术生成

众所周知,STM32是一款性价比比较高的ARM芯片,并且它拥有极为丰富的外设,方便实现大部分的功能。2014年,意法半导体公司推出HAL(Hardware Abstracted Library)和配套的STM32CubeMX,更是让STM32的开发变得易如反掌,使得繁复的初始化代码仅需简单配置即可完成,这是一次重大的变革。然而,HAL库中的某些功能的确让人摸不着头脑,比如我们今天的主角SPI。

关于SPI

SPI是Motorola推出的一种通信接口,它具有很多优点,这里不赘述,但是在HAL中,使用这个模块对应的库函数并非易事,那么问题出在哪里呢?

SPI发送16位数据的问题

根据参考手册,STM32的SPI拥有一个16位的数据寄存器,记为DR,但是我们看HAL库的函数,以轮询发送为例

/**
  * @brief  Transmit an amount of data in blocking mode.
  * @param  hspi pointer to a SPI_HandleTypeDef structure that contains
  *               the configuration information for SPI module.
  * @param  pData pointer t
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值