• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

STM32 HAL库 SPI怎样写函数

91cadc4ef00cb4d9 2018-10-29 浏览量:1146

请问STM32 HAL库 SPI怎样写函数发送16位数据方便,不是配置,因为函数入口是8位指针的

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 简单回答,发送两次就行了

    问题是,先发高8位还是低8位

    这要看外部器件的说明了

    比如w25q128Flash芯片的读操作

    图像 1.png

    在读指令03之后,要发送24位地址(23~0位)。

    请看,23处标有星号,下面注释了:*=MSB

    也就是高位优先。

    所以先发送高8位,再发中间8位,最后发送低8位。

    然后,给出该芯片读操作的代码,供参考

    uint8_t BSP_W25Qx_Read(uint8_t* pData uint32_t ReadAddr uint32_t Size)
    {
    	uint8_t cmd[4];
    
    	/* Configure the command */
    	cmd[0] = READ_CMD;
    	cmd[1] = (uint8_t)(ReadAddr >> 16);
    	cmd[2] = (uint8_t)(ReadAddr >> 8);
    	cmd[3] = (uint8_t)(ReadAddr);
    	
    	W25Qx_Enable();
    	/* Send the read ID command */
    	HAL_SPI_Transmit(&hspi2 cmd 4 W25Qx_TIMEOUT_VALUE);	
    	/* Reception of the data */
    	if (HAL_SPI_Receive(&hspi2 pDataSizeW25Qx_TIMEOUT_VALUE) != HAL_OK)
        {
            return W25Qx_ERROR;
        }
    	W25Qx_Disable();
    	return W25Qx_OK;
    }

    • 发布于 2018-10-29
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:6
  • 16位需要写两次就可以了,片选不是有硬件控制的
    • 发布于2018-10-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 因为SPI从机大部分是走8位数据信号的,因此最好的做法是用发送两次8位数据的方式实现16位的数据传输,其中CS引脚在传输间隙一直拉低。

    • 发布于2018-10-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 2次8位的发送,实现16位,但是要先发高8位
    • 发布于2018-10-31
    • 举报
    • 评论 0
    • 0
    • 0

  • 发的时候选择的数组仍然是8位的,但每次发的是两个字节


    • 发布于2018-11-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 参考一下正点原子的SPI教程,这个里面有详细的介绍
    • 发布于2018-11-25
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

STM32 HAL库 SPI怎样写函数