OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6551|回复: 4

stm32f429里面spi的发送HAL_SPI_Transmit()函数默认是发送8bit数据,但我AD7606需要传输16bit,怎么办呢?

[复制链接]

8

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2018-4-3
在线时间
14 小时
发表于 2019-2-26 16:35:51 | 显示全部楼层 |阅读模式
3金钱
问题:需要用SPI通信方式读取AD7606测的数据,AD7606是16位,所以SPI工作方式设置成为16位传输。但是,SPI的发送函数HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout)是8bit传输,怎么办呢?

同时,SPI的接受函数HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout)也是8bit传输。
应该编写函数呢?忘大神们指点。
下面是我写的代码,但不知道对不对,目前AD还没有调出来。

u16 AD7606_ReadBytes(void)
{

        u16 data = 0;

  /* Wait until the transmit buffer is empty*/
  while (__HAL_SPI_GET_FLAG(&SPI5_Handler,SPI_FLAG_TXE) == RESET)
  {
               
  }

  /* Send the byte */
        u16 TxData[]={0xffff};
  HAL_SPI_Transmit(&SPI5_Handler,(u8 *)TxData,sizeof(TxData),1000);
       

  /* Wait until a data is received */
  while (__HAL_SPI_GET_FLAG(&SPI5_Handler,SPI_FLAG_RXNE) == RESET)
  {
               
  }
       
        /* Get the received data */
        u8 RxData[2];
        HAL_SPI_Receive(&SPI5_Handler,RxData,2,1000);
       
        data=RxData[0];
        data <<= 8;
        data +=RxData[1];
       
  /* Return the shifted data */
  return  data;
}



求教,感谢。

最佳答案

查看完整内容[请看2#楼]

SPI配置为8位,16位数据可分为两次8位传输,没问题,SPI直接配置为16位模式,一次性写16位数据到DR就行了.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

277

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1522
金钱
1522
注册时间
2014-5-16
在线时间
217 小时
发表于 2019-2-26 16:35:52 | 显示全部楼层
SPI配置为8位,16位数据可分为两次8位传输,没问题,SPI直接配置为16位模式,一次性写16位数据到DR就行了.
回复

使用道具 举报

5

主题

277

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1522
金钱
1522
注册时间
2014-5-16
在线时间
217 小时
发表于 2019-2-26 17:32:16 | 显示全部楼层
另外,AD7606这个芯片,STM32用FSMC来操作更容易
回复

使用道具 举报

8

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2018-4-3
在线时间
14 小时
 楼主| 发表于 2019-2-27 16:57:50 | 显示全部楼层
zmingwang 发表于 2019-2-26 17:31
SPI配置为8位,16位数据可分为两次8位传输,没问题,SPI直接配置为16位模式,一次性写16位数据到DR就行了.

谢谢。
回复

使用道具 举报

2

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
123
金钱
123
注册时间
2020-1-17
在线时间
32 小时
发表于 2022-5-27 16:28:25 | 显示全部楼层
大神,代码能分享下不?一直没调通 1971804705@qq.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-25 17:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表