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

作者: tjcfeng
上传时间为: 2015-05-29 02:55 PM

    上一次让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'

    

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

    

    烧写进去看看效果

    

    换换方向

    

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

全部评论 ()

创建讨论帖子

登录 后参与评论
系统提示