打印
[STM32L4]

L432+AD7792,全0

[复制链接]
1262|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wyjie|  楼主 | 2021-10-11 23:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用L432的SPI3接AD7792,AD7792的/CS接地。
工程使用CUBE生成
SPI配置如下
static void MX_SPI3_Init(void)
{
  hspi3.Instance = SPI3;
  hspi3.Init.Mode = SPI_MODE_MASTER;
  hspi3.Init.Direction = SPI_DIRECTION_2LINES;
  hspi3.Init.DataSize = SPI_DATASIZE_8BIT;
  hspi3.Init.CLKPolarity = SPI_POLARITY_LOW;
  hspi3.Init.CLKPhase = SPI_PHASE_1EDGE;
  hspi3.Init.NSS = SPI_NSS_SOFT;
  hspi3.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256;
  hspi3.Init.FirstBit = SPI_FIRSTBIT_MSB;
  hspi3.Init.TIMode = SPI_TIMODE_DISABLE;
  hspi3.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
  hspi3.Init.CRCPolynomial = 7;
  hspi3.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE;
  hspi3.Init.NSSPMode = SPI_NSS_PULSE_ENABLE;
  if (HAL_SPI_Init(&hspi3) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }
}
void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
{
  GPIO_InitTypeDef GPIO_InitStruct;
  if(hspi->Instance==SPI3)
  {
  /* USER CODE BEGIN SPI3_MspInit 0 */
  /* USER CODE END SPI3_MspInit 0 */
    /* Peripheral clock enable */
    __HAL_RCC_SPI3_CLK_ENABLE();
  
    /**SPI3 GPIO Configuration   
    PB3 (JTDO-TRACESWO)     ------> SPI3_SCK
    PB4 (NJTRST)     ------> SPI3_MISO
    PB5     ------> SPI3_MOSI
    */
    GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
    GPIO_InitStruct.Alternate = GPIO_AF6_SPI3;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  /* USER CODE BEGIN SPI3_MspInit 1 */
  /* USER CODE END SPI3_MspInit 1 */
  }
}

自己写的:

读写:
void USER_SPI3_Write(uint8_t Tx_Len)
{

// HAL_SPI_Transmit_IT(&hspi3, gSPI3WriteBuff, Tx_Len);
HAL_SPI_Transmit(&hspi3, gSPI3WriteBuff, Tx_Len,1000);
}
void USER_SPI3_Read(uint8_t Rx_Len)
{
uint8_t i = 0;
uint8_t m_SPI3ReadWriteBuff[Rx_Len];
for(i = 0; i < Rx_Len;i++)
{
  m_SPI3ReadWriteBuff = 0x00;
}
HAL_SPI_TransmitReceive(&hspi3, m_SPI3ReadWriteBuff, gSPI3ReadBuff, Rx_Len,1000);  
}

初始化
void USER_InitAD7792(void)
{
gSPI3WriteBuff[0] = 0xFF;
gSPI3WriteBuff[1] = 0xFF;
gSPI3WriteBuff[2] = 0xFF;
gSPI3WriteBuff[3] = 0xFF;
USER_SPI3_Write(4);
USER_SPI3_Write(4);

while(1)
{
  gSPI3WriteBuff[0] = 0x40;
  gSPI3ReadBuff[0] = 0;
  gSPI3ReadBuff[1] = 0;
  USER_SPI3_Write(1);
  USER_SPI3_Read(1);
  if(gSPI3ReadBuff[0] == 0x80)
   break;
}
}

uint8_t USER_ReadDataFromAD7792(void)
{
uint8_t i = 0;

for(i = 0; i < 8; i++)
  gADData = 0;
/*****************************************/
gSPI3WriteBuff[0] = 0x28;
gSPI3WriteBuff[1] = 0x01;
USER_SPI3_Write(2);
gSPI3WriteBuff[0] = 0x10;
gSPI3WriteBuff[1] = 0x10;
gSPI3WriteBuff[2] = 0x86;//这里应该是AD7792片上的温度传感器
USER_SPI3_Write(3);


gSPI3WriteBuff[0] = 0x08;
gSPI3WriteBuff[1] = 0x20;
gSPI3WriteBuff[2] = 0x01;
USER_SPI3_Write(3);

while(1)
{
  gSPI3WriteBuff[0] = 0x40;
  gSPI3ReadBuff[0] = 0;
  gSPI3ReadBuff[1] = 0;
  USER_SPI3_Write(1);
  USER_SPI3_Read(1);
  if(gSPI3ReadBuff[0] == 0x06)
   break;
}
HAL_Delay(20);
gSPI3WriteBuff[0] = 0x58;
gSPI3ReadBuff[0] = 0;
gSPI3ReadBuff[1] = 0;
USER_SPI3_Write(1);
USER_SPI3_Read(2); //这里始终是0
gADData[0] = gSPI3ReadBuff[0];
gADData[1] = gSPI3ReadBuff[1];
}

使用特权

评论回复
沙发
xxrs| | 2021-10-11 23:13 | 只看该作者
除了这点有问题外,其它功能是否都正常了。

使用特权

评论回复
板凳
chenjunt| | 2021-10-11 23:15 | 只看该作者
首先检查下 硬件线路有没有问题。

使用特权

评论回复
地板
dengdc| | 2021-10-11 23:17 | 只看该作者
那些芯片都有参考电路的。

使用特权

评论回复
5
wyjie|  楼主 | 2021-10-11 23:19 | 只看该作者
gSPI3WriteBuff[0] = 0x48;        
        gSPI3ReadBuff[0] = 0;
        gSPI3ReadBuff[1] = 0;
        USER_SPI3_Write(1);        
        USER_SPI3_Read(2);
        gADData[0] = gSPI3ReadBuff[0];
        gADData[1] = gSPI3ReadBuff[1];
读取数据的时候改成这样,读取模式寄存器,可以读出0x6001来,

使用特权

评论回复
6
wyjie|  楼主 | 2021-10-11 23:22 | 只看该作者
可以读取状态寄存器呀,标志位指示转换完了呀,而且我采集的是片上的温度传感器呀,这个外部电路应该没有影响吧

使用特权

评论回复
7
dingy| | 2021-10-11 23:26 | 只看该作者
如果确定硬件没问题,那就检查下SPI相关配置

使用特权

评论回复
8
spark周| | 2021-10-11 23:29 | 只看该作者
比方相位、极性等两边是否一致

使用特权

评论回复
9
wyjie|  楼主 | 2021-10-11 23:31 | 只看该作者
可是我能读出状态寄存器什么的呀

使用特权

评论回复
10
huangchui| | 2021-10-11 23:36 | 只看该作者
检查硬件和时序问题

使用特权

评论回复
11
dengdc| | 2021-10-11 23:37 | 只看该作者
先排除硬件问题

使用特权

评论回复
12
chuxh| | 2021-10-11 23:40 | 只看该作者
帮楼主顶一下

使用特权

评论回复
13
dingy| | 2021-10-11 23:42 | 只看该作者
没用过这个芯片

使用特权

评论回复
14
renyaq| | 2021-10-11 23:45 | 只看该作者
硬件上怎么接的啊

使用特权

评论回复
15
keaibukelian| | 2021-11-3 13:41 | 只看该作者
是没有电平的变化吗

使用特权

评论回复
16
labasi| | 2021-11-3 13:43 | 只看该作者
可以读一下寄存器的值

使用特权

评论回复
17
paotangsan| | 2021-11-3 13:45 | 只看该作者
读出来的数据有问题啊

使用特权

评论回复
18
tpgf| | 2021-11-3 13:47 | 只看该作者
用示波器看看波形吧

使用特权

评论回复
19
renzheshengui| | 2021-11-3 13:49 | 只看该作者
二者之间使用spi吗

使用特权

评论回复
20
wakayi| | 2021-11-3 13:49 | 只看该作者
硬件连接可靠吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

927

主题

12706

帖子

5

粉丝