OpenEdv-开源电子网

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

stm32f4软件模拟iic读不了电子罗盘数据

[复制链接]

12

主题

26

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2016-4-4
在线时间
25 小时
发表于 2016-5-14 10:37:55 | 显示全部楼层 |阅读模式
5金钱
stm32f4软件模拟iic读电子罗盘数据一直是常数怎么动都不变,我在52上用可以读出数据,可移植到stm32就不行了用的正点原子的iic程序主要用myiic.c和myiic.h。器件地址应该是没错的在51能读出数据。
#include "HMC5883L.h"
#include "lcd.h"

void Init_HMC5883(void)
{
        IIC_Init();
        Write_HMC5883(0x02, 0x00);               
}
char op=0;
void Write_HMC5883(u8 add, u8 da)
{
    IIC_Start();                  
    IIC_Send_Byte(SlaveAddress);   
        IIC_Wait_Ack();
       

    IIC_Send_Byte(add);   
        IIC_Wait_Ack();

    IIC_Send_Byte(da);      
        IIC_Wait_Ack();

    IIC_Stop();                  
}

u8 Read_HMC5883(u8 REG_Address)
{   
        u8 REG_data;
    IIC_Start();                          
    IIC_Send_Byte(SlaveAddress);           
        IIC_Wait_Ack();

    IIC_Send_Byte(REG_Address);                          
        IIC_Wait_Ack();

    IIC_Start();                        
    IIC_Send_Byte(SlaveAddress+1);         
        IIC_Wait_Ack();

    REG_data=IIC_Read_Byte(0);            
        IIC_Stop();                          
    return REG_data;
}

//******************************************************
//
//
//
//******************************************************
void Multiple_read_HMC5883(u8*BUF)
{   u8 i;
    IIC_Start();                          
    IIC_Send_Byte(SlaveAddress);           
        IIC_Wait_Ack();
    IIC_Send_Byte(0x03);                          
        IIC_Wait_Ack();
    IIC_Start();                          
    IIC_Send_Byte(SlaveAddress+1);         
        IIC_Wait_Ack();
         for (i=0; i<6; i++)                     
    {

        if (i == 5)
        {
           BUF[i] = IIC_Read_Byte(0);         
        }
        else
        {
          BUF[i] = IIC_Read_Byte(1);         
       }
   }
    IIC_Stop();                          
         delay_ms(5);
}


最佳答案

查看完整内容[请看2#楼]

找到原因了,主程序用了atan2()函数没#include ,后来加上就好了。iic没问题
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

26

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2016-4-4
在线时间
25 小时
 楼主| 发表于 2016-5-14 10:37:56 | 显示全部楼层
找到原因了,主程序用了atan2()函数没#include  <math.h>,后来加上就好了。iic没问题
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 06:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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