GPIO口模擬IIC通訊

2021-06-28 01:29:49 字數 1198 閱讀 7424

#define sda 254 //定義sda所對應的gpio介面編號

#define scl 255 //定義scl所對應的gpio介面編號

#define outp 1 //表示gpio介面方向為輸出

#define inp 0 //表示gpio介面方向為輸入

/* i2c起始條件 */

int i2c_start()

/* i2c終止條件 */

void i2c_stop()

/*

i2c讀取ack訊號(寫資料時使用)

返回值 :0表示ack訊號有效;非0表示ack訊號無效

*/

unsigned char i2c_read_ack()

/* i2c發出ack訊號(讀資料時使用) */

int i2c_send_ack()

/* i2c位元組寫 */

void i2c_write_byte(unsigned char b)

i2c_send_ack(); //向目標裝置傳送ack訊號

return r;

} /*

i2c讀操作

buf:讀緩衝區

len:讀入位元組的長度

*/

void i2c_read(unsigned char addr, unsigned char* buf, int len)

{ int i;

unsigned char t;

i2c_start(); //起始條件,開始資料通訊

//傳送位址和資料讀寫方向

t = (addr << 1) | 1; //低位為1,表示讀資料

i2c_write_byte(t);

//讀入資料

for (i=0; i

gpio口模擬iic通訊的時候sda線時而作為輸入埠,時而 作為輸出埠,在傳送位元組的時候sda是作為輸出埠的,但是接受ack的時候以及讀取資料的時候是作為輸入端來動作的!

C51 GPIO口模擬串列埠方法

隨著微控制器的使用日益頻繁,用其作前置機進行採集和通訊也常見於各種應用,一般是利用前置機採集各種終端資料後進行處理 儲存,再主動或被動上報給管理站。這種情況下下,採集會需要乙個串列埠,上報又需要另乙個串列埠,這就要求微控制器具有雙串列埠的功能,但我們知道一般的51系列只提供乙個串列埠,那麼另乙個串列...

模擬IIC通訊(沒有用應答)

include include typedef unsigned char uint8 typedef unsigned int uint16 sbit scl p3 7 sbit sda p3 6 void delay void iic init void iic start void iic s...

用s5pc100的GPIO模擬IIC

先來看看lm75硬體的上的連線 其中i2c sda0是資料線,i2c scl0是時鐘線,它們分別接到s5pc100的gpd3和gpd4,如下圖所示 在模擬iic的時候,用gpd3引腳傳送資料或讀取資料,用gpd4引腳提供時鐘訊號即可。由於s5pc100的gpd這一組的引腳很多,不好單獨對其中的某乙個...