完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t timeout);
HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout);HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size, uint32_t Timeout); 请问一下HAL_SPI_Transmit HAL_SPI_Receive连用是否相当于用一个HAL_SPI_TransmitReceive ? 在HAL_SPI_Transmit中,核心的就是这句 if(__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) { *((__IO uint8_t*) hspi->Instance->DR) = (*pData); pData += sizeof(uint8_t); hspi->TxXferCount--; } 不是说SPI的MASTER写出去一个bit,就读回一个bit吗? 这里好像没看出来 另外在HAL_SPI_Receive中,核心的是这句 if(__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) { /* read the received data */ (* (uint8_t *)pData)= *(__IO uint8_t *) hspi->Instance->DR; pData += sizeof(uint8_t); hspi->RxXferCount--; } 同样是直接接收,没有发送的过程 在HAL_SPI_TransmitReceive中,核心的主要是下面这段,好像是发出了一个byte就接受一个byte, 看到这里我是不是觉得自己理解错了,是master发送一个byte,然后接收一个byte吗? 之前看到标准貌似是bit全双工的 if((hspi->TxXferCount > 0U) (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE))) { *(__IO uint8_t *) hspi->Instance->DR = (*pTxData++); hspi->TxXferCount--; } if((hspi->RxXferCount > 0U) (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE))) { (*(uint8_t *)pRxData++) = hspi->Instance->DR; hspi->RxXferCount--; } |
|
相关推荐
1个回答
|
|
您的问题似乎与SPI HAL (Hardware Abstraction Layer) 的API有关,特别是关于HAL_SPI_Transmit函数。这个函数是HAL库中用于SPI通信的一部分,用于发送数据。
函数原型如下: ```c HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout); ``` 参数解释: 1. `hspi`: 这是一个指向SPI_HandleTypeDef结构体的指针,该结构体包含了SPI配置的相关信息。 2. `pData`: 这是一个指向要发送的数据的指针。数据可以是8位的,因为SPI通信可以是8位或16位的,这取决于SPI的配置。 3. `Size`: 这是要发送的数据的长度,单位是字节。 4. `Timeout`: 这是一个超时值,用于指定在发送数据时等待多长时间。如果在这个时间内没有完成数据发送,函数将返回错误。 返回值: - `HAL_OK`: 表示操作成功。 - `HAL_BUSY`: 表示SPI正在忙,无法立即处理请求。 - `HAL_TIMEOUT`: 表示操作超时。 - `HAL_ERROR`: 表示发生了错误。 使用这个函数时,你需要确保SPI已经正确初始化,并且所有必要的参数都已经设置。例如,你需要设置SPI的时钟速度、数据位宽度、CPOL和CPHA等参数。 如果你有任何具体的问题或疑问,比如如何使用这个函数,或者你遇到了什么问题,请提供更多的信息,我会尽力帮助你。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1777 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1080 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
728 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1678 浏览 2 评论
1937浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
731浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
595浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
554浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 02:19 , Processed in 0.807809 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号