上一篇我们将了树莓派的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)
{

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

被折叠的 条评论
为什么被折叠?



