打印
[STM32L4]

L432+AD7792,全0,帮帮忙!!

[复制链接]
863|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pegion1001|  楼主 | 2019-10-23 15:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用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];
}

使用特权

评论回复
沙发
香水城| | 2019-10-23 17:07 | 只看该作者
除了这点有问题外,其它功能是否都正常了。首先检查下 硬件线路有没有问题。那些芯片都有参考电路的。

如果我有硬件 一定想办法帮帮你。

使用特权

评论回复
板凳
pegion1001|  楼主 | 2019-10-23 17:47 | 只看该作者
香水城 发表于 2019-10-23 17:07
除了这点有问题外,其它功能是否都正常了。首先检查下 硬件线路有没有问题。那些芯片都有参考电路的。

如 ...

        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来,

使用特权

评论回复
地板
pegion1001|  楼主 | 2019-10-23 17:48 | 只看该作者
香水城 发表于 2019-10-23 17:07
除了这点有问题外,其它功能是否都正常了。首先检查下 硬件线路有没有问题。那些芯片都有参考电路的。

如 ...

可以读取状态寄存器呀,标志位指示转换完了呀,而且我采集的是片上的温度传感器呀,这个外部电路应该没有影响吧

使用特权

评论回复
5
香水城| | 2019-10-24 08:32 | 只看该作者
本帖最后由 香水城 于 2019-10-24 08:45 编辑

如果确定硬件没问题,那就检查下SPI相关配置,比方相位、极性等两边是否一致。

使用特权

评论回复
6
pegion1001|  楼主 | 2019-10-24 11:16 | 只看该作者
香水城 发表于 2019-10-24 08:32
如果确定硬件没问题,那就检查下SPI相关配置,比方相位、极性等两边是否一致。 ...

可是我能读出状态寄存器什么的呀

使用特权

评论回复
7
internally| | 2019-10-24 16:10 | 只看该作者
检查硬件和时序问题

使用特权

评论回复
8
木木guainv| | 2019-11-18 12:54 | 只看该作者
先排除硬件问题

使用特权

评论回复
9
磨砂| | 2019-11-18 13:01 | 只看该作者
帮楼主顶一下

使用特权

评论回复
10
晓伍| | 2019-11-18 13:09 | 只看该作者
没用过这个芯片

使用特权

评论回复
11
八层楼| | 2019-11-18 13:22 | 只看该作者
硬件上怎么接的啊

使用特权

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

本版积分规则

67

主题

168

帖子

0

粉丝