查看: 1228|回复: 0

【CypressBLE】8.使用I2C地磁传感器

[复制链接]
  • TA的每日心情
    奋斗
    2022-9-16 05:52
  • 签到天数: 1368 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2015-5-29 14:55:47 | 显示全部楼层 |阅读模式
    分享到:
    上一次让LCD能显示东西方便调试了,接下来继续使用这个程序再增加个外设,HMC5883L地磁传感器。这个传感器使用I2C连接,地址为0x3C,7位的地址就是0x3C > 1 = 0x1E,程序中将使用这个地址。
        打开工程,在右边找到I2C拖过来


       
        双击I2C开始配置。板子是主模式,所以这里需要改成Master,其他的不用动

       
        再来设置一下I2C需要的引脚。由于在扩展板上没有找到合适的引脚,其他的接起来太麻烦,正好在蓝牙的小板上发现了四个预留口,居然和我的这个传感器引脚是一样的。不焊排座了,直接用杜邦线连接吧。蓝牙板上已经标明,SCL是P1_5,SDA是P1_4,就按照这个设置


       
        设置好后编译一下,自动生成I2C的代码。名字没有改,默认是I2C_1

       
       
        下面开始为HMC5883L编写代码。代码网上有很多,比如51的、STM32的,但是用到PSoC上需要稍微改动一下。新建一个两个文件保存为
    HMC5883L.c和HMC5883L.h

       
         将代码拷过来,注意I2C的调用方法有所不同

       
        主程序就好办了,别忘了在工程里引用HMNC5883的这两个文件

       
        开始编译,居然报错了。HMC5883里调用了atan2这个函数,但是math.h文件已经引用了,为什么还是编译不过去呢?

       
        原来引用的是头文件,但是实现的代码是包括在lib中,需要这样添加。在菜单中打开Build Setting

       
        找到Linker,在Additional Libraries里写如一个'm'

       
        确定保存,再次编译,没有问题了

       
        烧写进去看看效果

       
        换换方向

       
        这里只是做了最简单的通讯和数据转换,真正使用时还需要一些滤波等操作增加准确度,请自行查找相关算法吧。
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-5-9 03:32 , Processed in 0.137308 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.