一、配置i2c设备
1)在终端中操作,输入指令
sudo raspi-config
2)然后会出现设置界面,然后跟着如下图片操作

第一项:Change User Password: 更改用户登录密码,也就是登录树莓派的raspberry 密码。点击进入就可以设置新的登陆密码。
第二项:Network Options : 网络设置, 打开这个设置后可以连接wifi,设置机器名称 ,接口启用禁止等
第三项:Boot Options : 启动时选择进入的环境(命令模式/图形化模式)
**第四项:Localisation Options :**本地化设置包含:language语言设 置/Timezone时区设置/Keyboard键盘布局/wifi country 无线wif国家设置。
第五项:Interfacing Options : 系统功能设置,包含Camera摄像头启用 / SSH启用/VNC启用/SPI启用/I2C启用/serial启用/wire/GPIO 需要用到哪些就开启哪些功能
第六项:Overclock : 超频会减少树莓派使用寿命,正常情况下不建议超频使用。
第七项: Advanced Options : 高级设置,包含扩展TF卡使用空间/显示器overscan’设置/memorySplit设置/Audio音频输出设置/分辨率设置/等等
**第八项:Update :**系统更新,用于升级更新系统
第九项:About raspi-cofnig : 关于设置的系统


最后选择“是”
3)i2c总线扫描
通过i2cdetect -l指令可以查看树莓派上的I2C总线,从返回的结果来看树莓派含有两个I2C总线,通过阅读相关的资料,树莓派1代使用I2C0,而树莓派2代使用I2C1。
pi@raspberrypi:~/wiringPi $ i2cdetect -l
i2c-1 i2c bcm2835 I2C adapter I2C adapter
4)i2c设备查询
若总线上挂载I2C从设备,可通过i2cdetect扫描某个I2C总线上的所有设备。
i2cdetect -y 1

我挂在i2c总线上的是stm32的硬件i2c,从机地址设置为0x50(即0x28<<1)
二、通信代码指令
1、树莓派4b调用wiringPi库
#include "stdio.h"
#include "wiringPi.h"
#include "wiringPiI2C.h"
#include "pthread.h"
#include "unistd.h"
void *pthread_fun(void *arg)
{
int fd = *((int*)arg);
int Tx_buf = 12;
while(1)
{
wiringPiI2CWrite(fd, Tx_buf);
sleep(1);
}
return NULL;
}
int main(int argc, char *argv[])
{
int fd, err;
int Rx_buf;
pthread_t tid;
//对wiringPi初始化
if(wiringPiSetup() != 0)
{
printf("wiringPi error!\n");
return -1;
}
//指定i2c从机设备,并初始化i2c
fd = wiringPiI2CSetup(0x28);
if(fd < 0)
{
1931




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



