基于TM4C的MS5611数据采集问题

2019-03-24 09:06发布

程序:
void Timer0_ISQ(){
         TimerIntClear(TIMER0_BASE,TIMER_A);
         time_10ms++;
         if (time_10ms==1){
                        I2CMasterSingleTRANSMIT(I2C9_BASE,ALT_Adress,0x48);//第一步发送转换指令(OSR=4096, typ=D1 )下图中发送的是0x40(OSR=256, typ=D1)
//***********约9毫秒(实际)等待转换完成
                }
                else if (time_10ms==9){
                        I2CMasterSingleTRANSMIT(I2C9_BASE,ALT_Adress,0x00);//第二步给MS5611发送ADC地址0x00

                }
                else if (time_10ms==10){
                        I2CMasterRECEIVEMultDataBytes(I2C9_BASE,ALT_Adress,3,ALT_Arrist);//第三步接收24位数据,详情见下
                        time_10ms=0;
                }
}
//下列程序依据数据手册上的程序框图写成
void I2CMasterRECEIVEMultDataBytes(uint32_t ui32Base,uint8_t ui8SlaveAddr,int Num,uint32_t * Data){
       
                        I2CMasterSlaveAddrSet(ui32Base,ui8SlaveAddr,true);//设置7位设备地址,并做Read操作
                        I2CMasterControl( ui32Base,I2C_MASTER_CMD_BURST_RECEIVE_START);
                        while(Num){
                                        while(I2CMasterBusy(ui32Base));
                                        *Data=I2CMasterDataGet( ui32Base);//接收MS5611的 24Bit ADC数据
                                        Data++;
                                        Num--;
                                        if(Num)I2CMasterControl( ui32Base,I2C_MASTER_CMD_BURST_RECEIVE_CONT);//做出应答
                                        else I2CMasterControl( ui32Base,I2C_MASTER_CMD_BURST_RECEIVE_FINISH);//不做应答,发出停止位
                        }
                        while(I2CMasterBusy(ui32Base));
                        //*Data=I2CMasterDataGet( ui32Base);//数据手册中有此步骤,但有和没有貌似没区别
                       
}
时序图:
下面两个应该是正常的,参考最后一张图
1.png
2.png

但是这张图,只采集到了两个数据(共16位),但数据手册上写ADC是24位(参考最后一张图),求教问题出在哪.
error.png
shuju.png

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
1条回答
csstar02
1楼-- · 2019-03-24 13:34
< 得,问题我解决了,原来我的系统时钟为20Mhz,I2C速率为100KHz
就把I2C频率改成400KHz就完事了
补:个人发现系统时钟和I2C速率会影响传输,导致出错,具体原因待分析,有大神知道的告诉我也行

一周热门 更多>

相关问题

    相关文章