概述
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我想用树莓派作为I2C的slave,用GPIO4,5 作为SDA和SCL,master是一个无刷电机控制台,现在我想用中断的方式获取控制台发出的读取指令。
首先我需要获取命令的开始,即SCL高电平,SDA上出现下降沿,我使用wiringPi的wiringPiISR函数将我的处理代码链接到INT_EDGE_BOTH,然后
在函数触发之后读取一位来判断上升沿和下降沿;问题是输出的全部都是上升沿,没有下降沿,输出是:falling edge num:0 rising edge num:1416
在SCL上,输出是:falling edge num:862 rising edge num:1057,我觉的这两个数应该至多相差1.
有人知道原因或者遇到过相似的问题吗?
代码如下:
#树莓派型号:B+
#define SDA_IO 4
#define SCL_IO 5
int fnum=0,rnum=0;
void on_data_change(){
int da;
delayMicroseconds(50);
da = digitalRead(SDA_IO);
if(da) rnum++;
else fnum++;
}
int init_slave(){
int er;
er = wiringPiSetup();
if(er){
printf("%d :errorn",er);
return;
}
pinMode(SDA_IO,INPUT);
pullUpDnControl(SDA_IO,PUD_UP);
er = wiringPiISR(SDA_IO,INT_EDGE_BOTH,on_data_change);
if(er){
printf("%d :errorn",er);
return;
}
return er;
}
int main(){
int er = init_slave();
delay(1000);
printf("falling edge num:%d rising edge num:%dn",fnum,rnum);
return 0;
}
最后
以上就是清爽玉米为你收集整理的linux 监听gpio上升沿,求助:gpio 只能读到上升沿,读不到下降沿的全部内容,希望文章能够帮你解决linux 监听gpio上升沿,求助:gpio 只能读到上升沿,读不到下降沿所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复