iic
匯流排工作原理 i
2c匯流排進行資料傳送時,時鐘訊號為高電平期間,資料線上的資料必須保持穩定,只有在時鐘線上的訊號為低電平期間,資料線上的高電平或低電平狀態才允許變化。
起始和終止訊號
:scl
線為高電平期間,
sda線由高電平向低電平的變化表示起始訊號;
scl線為高電平期間,
sda線由低電平向高電平的變化表示終止訊號。
資料傳送格式
(1)位元組傳送與應答
每乙個位元組必須保證是8
位長度。資料傳送時,先傳送最高位(
msb),每乙個被傳送的位元組後面都必須跟隨一位應答位(即一幀共有
9位)。如果一段時間內沒有收到從機的應答訊號,則自動認為從機已正確接收到資料。
at24c02的晶元位址如下圖,
1010
為固定,a0,
a1,a2正好與晶元的1,
2,3引角對應,為當前電路中的位址選擇線,三根線可選擇
8個晶元同時連線在電路中,當要與哪個晶元通訊時傳送相應的位址即可與該晶元建立連線,
tx-1b
實驗板上三根位址線都為
0。最後一位
r/w為告訴從機下一位元組資料是要讀還是寫,
0為寫入,
1為讀出。
at24c02的晶元位址(
0xa0
為寫,0xa1
為讀)
任一位址寫入資料格式
任一位址讀取資料格式
void init() //初始化
scl=1;
delay();
sda=1;
delay();
void start() //啟動訊號
sda=1;
delay();
scl=1;
delay();
sda=0;
delay();
void stop() //停止訊號
sda=0;
delay();
scl=1;
delay();
sda=1;
delay();
void respons() //回應訊號
uchar i=0;scl=1;delay();
while((sda==1)&&(i<
255))i++;
scl=0;delay();}
void writebyte(uchar date)// 寫乙個位元組
uchar i,temp;
temp=date;
for(i=0;i<
8;i++)
temp
temp=temp<
<
1; scl=0;
delay();
sda=cy;
delay();
scl=1;
delay();
scl=0;
delay();
sda=1;
delay();
uchar readbyte()
//讀乙個位元組
uchar i,j,k;
scl=0;
delay();
sda=1;
for(i=0;i<
8;i++)
scl=1;
delay();
if(sda==1)
j=1;
else
j=0;
k=(k<
<
1)|j;
scl=0;
delay();
delay();
return k;
void write_add(uchar address,
uchar info)
//指定位址寫乙個位元組資料
start();
writebyte(0xa0);
respons();
writebyte(address);
respons();
writebyte(info);
respons();
stop();
uchar read_add(uchar address)
//指定位址讀乙個位元組資料
uchar dd;
start();
writebyte(0xa0);
respons();
writebyte(address);
respons();
start();
writebyte(0xa1);
respons();
dd=readbyte();
stop();
return dd;
IIC匯流排工作原理
2017 04 26 14 56 340人閱讀收藏 舉報 圖11 1給出乙個由mcu作為主機,通過iic匯流排帶3個從機的單主機iic匯流排系統。這是最常用 最典型的iic匯流排連線方式。物理結構上,iic系統由一條序列資料線sda和一條序列時鐘線scl組成。主機按一定的通訊協議向從機定址和進行資訊...
IIC匯流排硬體工作原理(待完善)
一 iic基礎概念 簡單 介面在元件上,占用空間小 高效 能夠以10kbps的最大傳輸速率支援40個元件 多主控 任何能夠進行傳送和接收的裝置都可以成為主匯流排 2 協議簡介 匯流排訊號 sda 序列資料線 scl 序列時鐘 匯流排空閒狀態 sda 高電平 scl 高電平 起始位 scl為高電平期間...
IIC序列匯流排的組成及工作原理
1.基本組成 iic匯流排只有兩根雙向訊號線 資料線sda serial data i o 時鐘線scl serial clock 如圖,iic匯流排上可以掛多個器件,資料通訊方式採用主從方式,主機負責主動聯絡從機,而從機則被動回應資料。iic匯流排通過上拉電阻接正電源,匯流排空閒時兩根線均為高電平...