微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > RDA5807制作收音机,stm32 i2c读出寄存器数据出错。

RDA5807制作收音机,stm32 i2c读出寄存器数据出错。

时间:10-02 整理:3721RD 点击:
/*******************************************************************
oˉêy??   £oRead_FM_Data
?èê?     £oFM?£?é??′??÷á?D??á3?
ê?è?     £oêy×é??????
·μ??     £o?T
μ÷ó?     £o?ú2?μ÷ó?
*******************************************************************/
static void Read_FM_Data(uint8_t *Readbuf)
{
        uint8_t i;                        //?-?·??êy
       
        while(I2C_GetFlagStatus(I2C1,I2C_FLAG_BUSY)==SET);//2é?|
        I2C_GenerateSTART(I2C1,ENABLE);  //I2C?eê?D?o?
       
                /*è·è?EV5ê??t·¢éú*/
        while(I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_MODE_SELECT)==SUCCESS);
       
        I2C_Send7bitAddress(I2C1,FM_addr,I2C_Direction_Receiver);
       
                /*è·è?EV6ê??t·¢éú*/
        while(I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)==SUCCESS);
       
        for(i=0;i<=3;i++)
        {
                *(Readbuf+i)=I2C_ReceiveData(I2C1);
               
                /*è·è?EV7ê??t·¢éú*/
                while(I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_RECEIVED)==SUCCESS);
        }
       
        I2C_GenerateSTOP(I2C1,ENABLE);   //I2C???1D?o?
}
/********************************************************************/
乱码请忽视。读出的寄存器数据全部为0x21,RDA芯片的地址是0x20。不知道是i2c配置问题,还是rda的寄存器操作不对。求看看问题

STM32的IIC外设驱动有bug的,或者说与一般我们用到IIC有些差异,所以建议不熟悉的直接用IO口模拟IIC协议,那样应该更快哦~~~

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top