OpenEdv-开源电子网

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

AD7190读取出错!!!!!!!!!!!!!

[复制链接]

74

主题

182

帖子

0

精华

高级会员

Rank: 4

积分
588
金钱
588
注册时间
2014-10-15
在线时间
137 小时
发表于 2020-1-4 18:47:02 | 显示全部楼层 |阅读模式
1金钱
芯片为STM32F407VET6初始化代码:
void MX_WEIGHT_SPI_Init(void)
{

  GPIO_InitTypeDef GPIO_InitStruct;


        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);


        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //ê1ÄüGPIOAμÄê±Öó
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE); //ê1ÄüGPIOBμÄê±Öó
  /**SPI1 GPIO Configuration   
  PA5     ------> SPI1_SCK
  PB4     ------> SPI1_MISO
  PB5     ------> SPI1_MOSI
  */   

        //////////////////////////////////////////////////////////////
        GPIO_InitStruct.GPIO_Pin=WEIGHT_SCK_Pin;
        GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF;
        GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_NOPULL;
        GPIO_InitStruct.GPIO_Speed=GPIO_Speed_100MHz;
       
        GPIO_Init(GPIOA,&GPIO_InitStruct);
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource5, GPIO_AF_SPI1);       
       

  ////////////////////////////////////////////////////////////////
        GPIO_InitStruct.GPIO_Pin=WEIGHT_MISO_Pin;
        GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN;
        GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_UP;
        GPIO_InitStruct.GPIO_Speed=GPIO_Speed_100MHz;
       
        GPIO_Init(GPIOB,&GPIO_InitStruct);
        GPIO_PinAFConfig(GPIOB, GPIO_PinSource4, GPIO_AF_SPI1);
       
        GPIO_InitStruct.GPIO_Pin=WEIGHT_MOSI_Pin;
        GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF;
        GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_NOPULL;
        GPIO_InitStruct.GPIO_Speed=GPIO_Speed_100MHz;
       
        GPIO_Init(GPIOB,&GPIO_InitStruct);
        GPIO_PinAFConfig(GPIOB, GPIO_PinSource5, GPIO_AF_SPI1);
       

  /////////////////////////////////////////////////////////////////////
        GPIO_InitStruct.GPIO_Pin=WEIGHT_CS_Pin;
  GPIO_InitStruct.GPIO_Mode=GPIO_Mode_OUT;
        GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_NOPULL;
        GPIO_InitStruct.GPIO_Speed=GPIO_Speed_100MHz;
        GPIO_Init(GPIOA,&GPIO_InitStruct);
       

        SPI_Cmd(WEIGHT_SPIx, DISABLE);
       
        hspi_weight.SPI_Mode = SPI_Mode_Master;

        hspi_weight.SPI_Direction = SPI_Direction_2Lines_FullDuplex;

        hspi_weight.SPI_DataSize = SPI_DataSize_8b;

        hspi_weight.SPI_CPOL = SPI_CPOL_High;

        hspi_weight.SPI_CPHA   = SPI_CPHA_2Edge;

        hspi_weight.SPI_NSS = SPI_NSS_Soft;

        hspi_weight.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;

        hspi_weight.SPI_FirstBit = SPI_FirstBit_MSB;

       
       
        hspi_weight.SPI_CRCPolynomial = 7;

  SPI_Init(WEIGHT_SPIx,&hspi_weight);
       
        SPI_Cmd(WEIGHT_SPIx, ENABLE);
        WEIGHT_CS_ENABLE();
}

不知道哪儿的问题。
全速运行,卡在这儿,不走了。
/***************************************************************************//**
* @brief Reads the value of a register.
*
* @param registerAddress - Address of the register.
* @param bytesNumber - Number of bytes that will be read.
*
* @return buffer - Value of the register.
*******************************************************************************/
unsigned int AD7190_GetRegisterValue(unsigned char registerAddress,
                                      unsigned char bytesNumber)
{
    unsigned char registerWord[4] = {0, 0, 0, 0};
    unsigned char address         = 0;
    unsigned int  buffer          = 0x0;
    unsigned char i               = 0;

    address = AD7190_COMM_READ | AD7190_COMM_ADDR(registerAddress);

   // HAL_SPI_Transmit(&hspi_weight,&address, 1,0xFFFFFF);   
   // HAL_SPI_Receive(&hspi_weight,registerWord,bytesNumber,0xFFFFFF);
                SPI1_TransmitByte(address);
                  
    for(i = 0; i < bytesNumber; i++)
    {
                        while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET); //这一句
                        registerWord=SPI_I2S_ReceiveData(SPI1); //???????       
      buffer = (buffer << 8) + registerWord;
    }
    return buffer;
}

请问大神,如何解决?谢谢!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2020-1-4 18:47:03 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-11 15:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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