stm32F4之用示波器解码I2C协议

        当我们调试I2C的时候,有时候我们并不清楚,I2C协议有没有正常工作,借助示波器,我们可以很直观的看到通过I2C协议发出数据。所以掌握示波器对I2C进行解码也是很重要的,这里我使用的是 SIGLENT 公司的示波器,型号为 SDS 1202X,支持I2C,SPI解码等。

一.用示波器解码I2C的相关代码

主函数代码

int main(void)
{
    u8 read; 
	//初始化延时函数
	delay_init(168);
	//初始化串口
	usart_init(115200);
	//初始化24c02
    Init_24c02();	

	while(1)
	{
		sendOneByte(0x00,0x20);
		read=receiveOneByte(0x00);
		USART_SendData(USART1,read);
	    delay_ms(1000);
	}

}

24c02实现读写的代码

void Init_24c02()
{

	IIC_init();

}
//发送一个字节的数据
void sendOneByte(u8 Adddr_send, u8 data_send)
{
	IIC_start();
	IIC_Send_Byte(0xA0);
	IIC_Wait_Ack();
	IIC_Send_Byte(Adddr_send);
	IIC_Wait_Ack();
	IIC_Send_Byte(data_send);
	IIC_Wait_Ack();
	IIC_stop();
	delay_ms(10);
}
//接收一个字节的数据
u8 receiveOneByte(u8 Addr_receive)
{
	u8 receive=0;
	IIC_start();
	IIC_Send_Byte(0xA0);
	IIC_Wait_Ack();
	IIC_Send_Byte(Addr_receive);
	IIC_Wait_Ack();
	IIC_start();
	IIC_Send_Byte(0xA1);
	IIC_Wait_Ack();
	receive=IIC_Read_Byte(0);
	IIC_stop();
	return receive;
}

 二.示波器的使用

1.先设置解码参数,点击右边的decode,屏幕下方就会出现几个选项,选择串行总线1,IIC解码,信号源设置(设置CH1为SCK,CH2为SDA),地址7位,指得是设备地址,显示开启(可以看到解码出来的数据)stm32F4之用示波器解码I2C协议_第1张图片

 2.设置解码触发

点击下图中的触发设置

 选择总线1(与之前选的解码总线保持一致),触发条件为开始条件

 方法一,此时若要捕捉,可以先按解码,然后按触发中的normal,然后上电,若操作正常,应能捕捉的到(本程序是一直循环,方便捕捉)

方法二:在已上完电的情况下,点击auto,左右旋转Horizontal键,找到适当的地方(可以看到数据在传输),点击normal,也可以解码触发

 这样就可以在示波器上,看到解码的I2C数据

你可能感兴趣的:(STM32,STM32,解码I2C)