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位,指得是設備地址,顯示開啓(可以看到解碼出來的數據)

 2.設置解碼觸發

點擊下圖中的觸發設置

 選擇總線1(與之前選的解碼總線保持一致),觸發條件爲開始條件

 方法一,此時若要捕捉,可以先按解碼,然後按觸發中的normal,然後上電,若操作正常,應能捕捉的到(本程序是一直循環,方便捕捉)

方法二:在已上完電的情況下,點擊auto,左右旋轉Horizontal鍵,找到適當的地方(可以看到數據在傳輸),點擊normal,也可以解碼觸發

 這樣就可以在示波器上,看到解碼的I2C數據

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章