怎样测模拟I2C总线速率?
发布网友
发布时间:2022-04-20 08:10
我来回答
共2个回答
热心网友
时间:2023-08-01 22:32
首先要声明的是,如果你使用I2C时序的话,一般来说只能实现I2C主器件。
如果有电平检测中断倒是有可能实现从模块,不过也会相当复杂的。
发送一个字节,跟发送多个字节其实没多大差别。
I2C时序首先执行开始时序,然后发送从模块地址还有读写命令。
接着发送数据字节,如果你要发送多字节,就不要马上执行I2C结束时序,
继续发送你要数据,等数据发送完成后再执行结束时序。
当然,也要有响应信号的处理。
程序如下:
void sendstr(uchar addr)
{
start_i2c();
send_byte(addr);
reply();
send_byte(dat1);
reply();
send_byte(dat2);
reply();
send_byte(dat3);
reply();
stop_i2c();
}
篇幅有限,只能提供大致思路,各时序子程序还需自行思考。
希望对你有帮助。
热心网友
时间:2023-08-01 22:33
多个字节也是用发送一个字节的函数发送的,只是多次调用而已,
比如发送一个数组array[n],发送单个字节的是函数
data_send(unsigned char data,unsigned char address);
则可以这样调用:
void send_array(array,n,address)
{
unsigned char i=n;
while(n)
{
data_send(*array,address);
array++;
address++;
n--;
}
}