树莓派3B 之IIC通信

本文介绍树莓派3B如何进行IIC通信,重点在于读取slave设备的数据。利用wiringPi库,通过驱动IIC的SDA/SCL引脚8和9与陀螺仪模块进行交互,获取三个方向的姿态角数据。文中提到IIC的内部实现细节被封装在bsp_iic.cpp和bsp_iic.h文件中,提供了方便的读取接口供用户直接调用。

上一篇我们将了树莓派的uart通信。

本篇幅我们来讲一下,树莓派IIC通信。

读取slave 的数据。

依然我们用wirningPi库,驱动IIC 的引脚编号8/9,分别用作SDA/SCL。

我们用来读取陀螺仪模块的三个方向姿态角数据。

bsp_iic.cpp:

#include "jy901_Init.h"
#include <stdio.h>


//读取到的原始角度
float x_angle = 0;  // roll
float y_angle = 0;  // pitch
float z_angle = 0;  // yaw

//===========================================================================
//使用何种滤波器
#define USE_MIDDLE_FILTER   1
#define USE_AVERAGE_FILTER  1 - USE_MIDDLE_FILTER

static const int SIZE = 5;   //排序数组长度
short x_f = 0;
short y_f = 0;
short z_f = 0;
short x_buff[SIZE],y_buff[SIZE],z_buff[SIZE];

#if USE_MIDDLE_FILTER
/*
 * bubble sort  冒泡法排序
 */
void bubble_sort(short *data, short size)
{
    short i;
    short temp;

    while(size > 1)
    {
        for(i = 0; i < size; i++)
        {
            if(data[i] > data[i+1])
            {
                temp = data[i];
                data[i] = data[i+1];
                data[i+1] = temp;
            }
        }
        size--;
    }

}

//中值滤波器
short median_filter(short data[])
{
    short output;

    bubble_sort(data,SIZE);
    return output = data[SIZE/2];
}
#endif/*USE_MIDDLE_FILTER*/

#if USE_AVERAGE_FILTER
//均值滤波器
short average_calculate(short *data, short size)
{
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值