99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

應(yīng)廣單片機(jī)系列——高速I(mǎi)2C接口

聚豐開(kāi)發(fā) ? 2018-10-16 18:45 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

經(jīng)過(guò)一段時(shí)間的慎重考慮,在諸多朋友的支持下,決定在接下來(lái)的日子里,會(huì)盡可能多的寫(xiě)一些關(guān)于應(yīng)廣多核單片機(jī)應(yīng)用的文章,希望能給有興趣學(xué)習(xí)了解應(yīng)廣單片機(jī)的朋友提供到點(diǎn)滴幫助。

這個(gè)針對(duì)應(yīng)廣雙核、多核單片機(jī)應(yīng)用的系列,會(huì)以具體程序?yàn)槔?,在程序中加以注釋,只要條件允許,例程都會(huì)經(jīng)過(guò)調(diào)試,如果只是編譯沒(méi)有調(diào)試的,我會(huì)注明。

附件中的例程代碼,讀者可以自由使用,不需要通知我,如有可能,希望在代碼中保留我的簽名信息,深表感謝!

例程為利用應(yīng)廣單片機(jī)的特點(diǎn),用軟件實(shí)現(xiàn)理論速率可以達(dá)到1M的I2C通訊接口,如果是其它普通單片機(jī),也可以用軟件模擬出高速I(mǎi)2C,不同點(diǎn)是應(yīng)廣實(shí)現(xiàn)模擬后還能夠?qū)崿F(xiàn)各種控制功能,而其它普通單片則不能。


//-----------------------------------------
//應(yīng)廣單片機(jī)軟件實(shí)現(xiàn)高速I(mǎi)2C接口例程(SALVE模式)
//本例僅供參考,歡迎指正程序中的問(wèn)題
//本例利用應(yīng)廣單片機(jī)的雙核特點(diǎn)
//用一個(gè)核專門(mén)對(duì)I2C接口的IO進(jìn)行掃描等待
//對(duì)I2C接口的高低變化利用應(yīng)廣特有的IO狀態(tài)等待指令高速實(shí)現(xiàn)IO口跳變判斷
//利用定時(shí)器
進(jìn)行超時(shí)判斷
//理論上可以讓模擬的I2C接口達(dá)到1M的速率
//2012年12月15日
//
//作者:戴上舉
//郵箱:daishangju@163.com
//博客:forum.eet-cn.com/BLOG_daishangju_334.HTM
//電話:13509678051
//Q Q:1514292225
//-----------------------------------------

.chip p201cs14a
//{{PADAUK_CODE_OPTION
.Code_Option Bootup Slow // 1024 ILRC
.Code_Option LVD 2.79V // Maximum performance = 4 MIPS
.Code_Option Security Enable // Security 3/4 words Enable
//}}PADAUK_CODE_OPTION

//定義I2C接口要用的IO口,用戶可以自己修改這里的IO口定義
I2C_SDA equ pa.0
I2C_SDA_LOW equ set0 I2C_SDA
I2C_SDA_HIGH equ set1 I2C_SDA
I2C_SDA_INPUT equ set0 pac.0
I2C_SDA_OUTPUT equ set1 pac.0
I2C_SCL equ pa.4
//定義I2C設(shè)備地址,用戶可以自己修改此地址
I2C_READ_CMD equ 0x7F
I2C_WRITE_CMD equ 0x7E


word init_timer

//byte Xms
//byte ms_cnt

byte i2c_device //用來(lái)存放I2C接口地址
byte i2c_write_byte //I2C進(jìn)行寫(xiě)操作時(shí)存放I2C寫(xiě)入的數(shù)據(jù)
byte i2c_read_byte //I2C進(jìn)行讀操作時(shí)候讀出的內(nèi)容

bit i2c_start_flag

//應(yīng)廣單片機(jī)程序入口,第一條必須為跳轉(zhuǎn)到第一個(gè)內(nèi)核主程序入口地址的指令,第二條為第二個(gè)內(nèi)核,有幾個(gè)內(nèi)核就有幾條
.romadr 0x000
goto main0
goto main1


//應(yīng)廣單片機(jī)中斷程序入口地址,所有中斷共用同一個(gè)入口,需要用戶自己判斷中斷類型
.romadr 0x010
pushaf //壓棧
if(intrq.T16) //判斷是否為定時(shí)中斷
{
stt16 init_timer //清內(nèi)部TIMER計(jì)數(shù)器
if(i2c_start_flag) //啟動(dòng)I2C通訊處理后這個(gè)標(biāo)志會(huì)被置1
{
I2C_SDA_INPUT
reset //系統(tǒng)復(fù)位
}
}
intrq = 0 //清中斷標(biāo)志
popaf //彈棧
reti //中斷返回

//----------------------------------------
//input: ms
//用該函數(shù)可以再4M的頻率下得到近似1毫秒的延時(shí),在第一個(gè)內(nèi)核中調(diào)用中斷會(huì)導(dǎo)致延時(shí)加長(zhǎng)
//----------------------------------------
/*delayXms:
while(Xms)
{
wdreset
ms_cnt = 20
while(ms_cnt)
{
delay 195
ms_cnt--
}
Xms--
}
ret*/

//用IO口模擬I2C slave模式的子函數(shù)
i2c_slave:
I2C_SDA_INPUT //將SDA設(shè)為輸入
i2c_start:
//I2C空閑狀態(tài)下SDA和SCL同為高電平,要啟動(dòng)I2C前初始狀態(tài)必須是兩者同為高
stt16 init_timer //清內(nèi)部TIMER計(jì)數(shù)器
if(!I2C_SCL) //如果SCL為低,此時(shí)不用啟動(dòng)I2C通訊處理
{
goto i2c_stop
}
if(!I2C_SDA) //如果SDA為低,此時(shí)不用啟動(dòng)I2C通訊處理
{
goto i2c_stop
}

i2c_start_flag = 1 //啟動(dòng)I2C通訊處理,這個(gè)標(biāo)志位會(huì)在定時(shí)中斷中用到

//I2C的START信號(hào)是SDA和SCL同為高電平裝態(tài)下SDA先變?yōu)榈?,然后SCL變?yōu)榈?br />//判斷I2C START信號(hào)
//等待SDA從高變低
stt16 init_timer //清內(nèi)部TIMER計(jì)數(shù)器
wait0 I2C_SDA //應(yīng)廣特有的等待IO變低指令,等待SDA從高變低,如果長(zhǎng)時(shí)間沒(méi)有變低,會(huì)觸發(fā)定時(shí)中斷,系統(tǒng)復(fù)位
nop //加適當(dāng)延時(shí)消除IO抖動(dòng)的影響
nop
nop
nop
//等待SCL從高變低,原理同上
stt16 init_timer
wait0 I2C_SCL //if overtime MCU will auto reset
nop
nop
nop
nop

//已經(jīng)判斷為得到有效START信號(hào)


//開(kāi)始接收I2C的器件地址,為了實(shí)現(xiàn)高速處理,程序順序處理,沒(méi)有使用循環(huán)處理方式
i2c_device = 0
stt16 init_timer //device bit7
wait1 I2C_SCL
nop
nop
nop
nop
if(I2C_SDA)
{
set1 i2c_device.7
}
wait0 I2C_SCL
nop
nop
nop
nop
stt16 init_timer //device bit6
wait1 I2C_SCL
nop
nop
nop
nop
if(I2C_SDA)
{
set1 i2c_device.6
}
wait0 I2C_SCL
nop
nop
nop
nop
stt16 init_timer //device bit5
wait1 I2C_SCL
nop
nop
nop
nop
if(I2C_SDA)
{
set1 i2c_device.5
}
wait0 I2C_SCL
nop
nop
nop
nop
stt16 init_timer //device bit4
wait1 I2C_SCL
nop
nop
nop
nop
if(I2C_SDA)
{
set1 i2c_device.4
}
wait0 I2C_SCL
nop
nop
nop
nop
stt16 init_timer //device bit3
wait1 I2C_SCL
nop
nop
nop
nop
if(I2C_SDA)
{
set1 i2c_device.3
}
wait0 I2C_SCL
nop
nop
nop
nop
stt16 init_timer //device bit2
wait1 I2C_SCL
nop
nop
nop
nop
if(I2C_SDA)
{
set1 i2c_device.2
}
wait0 I2C_SCL
nop
nop
nop
nop
stt16 init_timer //device bit1
wait1 I2C_SCL
nop
nop
nop
nop
if(I2C_SDA)
{
set1 i2c_device.1
}
wait0 I2C_SCL
nop
nop
nop
nop
stt16 init_timer //device bit0
wait1 I2C_SCL
nop
nop
nop
nop
if(I2C_SDA)
{
set1 i2c_device.0
}
wait0 I2C_SCL
//nop //后面的比較操作會(huì)耗費(fèi)時(shí)間,可以不用延時(shí)
//nop
//nop
//nop


if(i2c_device == I2C_READ_CMD) //I2C進(jìn)行讀操作,同樣為了實(shí)現(xiàn)高速處理,程序順序處理,沒(méi)有使用循環(huán)處理方式
{
//回復(fù)slave ACK信號(hào)
I2C_SDA_OUTPUT
I2C_SDA_LOW
stt16 init_timer
wait1 I2C_SCL
nop
nop
nop
nop
wait0 I2C_SCL
//nop
//nop
//nop
//nop


stt16 init_timer //i2c_read_byte bit7
if(i2c_read_byte.7)
{
I2C_SDA_HIGH
}
else
{
I2C_SDA_LOW
}
wait1 I2C_SCL
nop
nop
nop
nop
wait0 I2C_SCL
//nop
//nop
//nop
//nop
stt16 init_timer //i2c_read_byte bit6
if(i2c_read_byte.6)
{
I2C_SDA_HIGH
}
else
{
I2C_SDA_LOW
}
wait1 I2C_SCL
nop
nop
nop
nop
wait0 I2C_SCL
//nop
//nop
//nop
//nop
stt16 init_timer //i2c_read_byte bit5
if(i2c_read_byte.5)
{
I2C_SDA_HIGH
}
else
{
I2C_SDA_LOW
}
wait1 I2C_SCL
nop
nop
nop
nop
wait0 I2C_SCL
//nop
//nop
//nop
//nop
stt16 init_timer //i2c_read_byte bit4
if(i2c_read_byte.4)
{
I2C_SDA_HIGH
}
else
{
I2C_SDA_LOW
}
wait1 I2C_SCL
nop
nop
nop
nop
wait0 I2C_SCL
//nop
//nop
//nop
//nop
stt16 init_timer //i2c_read_byte bit3
if(i2c_read_byte.3)
{
I2C_SDA_HIGH
}
else
{
I2C_SDA_LOW
}
wait1 I2C_SCL
nop
nop
nop
nop
wait0 I2C_SCL
//nop
//nop
//nop
//nop
stt16 init_timer //i2c_read_byte bit2
if(i2c_read_byte.2)
{
I2C_SDA_HIGH
}
else
{
I2C_SDA_LOW
}
wait1 I2C_SCL
nop
nop
nop
nop
wait0 I2C_SCL
//nop
//nop
//nop
//nop
stt16 init_timer //i2c_read_byte bit1
if(i2c_read_byte.1)
{
I2C_SDA_HIGH
}
else
{
I2C_SDA_LOW
}
wait1 I2C_SCL
nop
nop
nop
nop
wait0 I2C_SCL
//nop
//nop
//nop
//nop
stt16 init_timer //i2c_read_byte bit0
if(i2c_read_byte.0)
{
I2C_SDA_HIGH
}
else
{
I2C_SDA_LOW
}
wait1 I2C_SCL
nop
nop
nop
nop
wait0 I2C_SCL
//nop
//nop
//nop
//nop

I2C_SDA_INPUT
stt16 init_timer //master ack/nack
wait1 I2C_SCL
nop
nop
nop
nop
wait0 I2C_SCL
nop
nop
nop
nop
stt16 init_timer //END
wait1 I2C_SCL
nop
nop
nop
nop
stt16 init_timer
wait1 I2C_SDA
nop
nop
nop
nop
}
else if(i2c_device == I2C_WRITE_CMD) //I2C是進(jìn)行寫(xiě)操作,同樣為了實(shí)現(xiàn)高速處理,程序順序處理,沒(méi)有使用循環(huán)處理方式
{
//slave ACK
I2C_SDA_OUTPUT //--------I2C SDA input/output switch----------
I2C_SDA_LOW
stt16 init_timer
wait1 I2C_SCL
nop
nop
nop
nop
wait0 I2C_SCL
//nop
//nop
//nop
//nop

I2C_SDA_INPUT
i2c_write_byte = 0
stt16 init_timer //i2c_write_byte bit7
if(I2C_SDA)
{
set1 i2c_write_byte.7
}
nop
wait1 I2C_SCL
nop
nop
nop
nop
wait0 I2C_SCL
//nop
//nop
//nop
//nop
stt16 init_timer //i2c_write_byte bit6
if(I2C_SDA)
{
set1 i2c_write_byte.6
}
nop
wait1 I2C_SCL
nop
nop
nop
nop
wait0 I2C_SCL
//nop
//nop
//nop
//nop
stt16 init_timer //i2c_write_byte bit5
if(I2C_SDA)
{
set1 i2c_write_byte.5
}
nop
wait1 I2C_SCL
nop
nop
nop
nop
wait0 I2C_SCL
//nop
//nop
//nop
//nop
stt16 init_timer //i2c_write_byte bit4
if(I2C_SDA)
{
set1 i2c_write_byte.4
}
nop
wait1 I2C_SCL
nop
nop
nop
nop
wait0 I2C_SCL
//nop
//nop
//nop
//nop
stt16 init_timer //i2c_write_byte bit3
if(I2C_SDA)
{
set1 i2c_write_byte.3
}
nop
wait1 I2C_SCL
nop
nop
nop
nop
wait0 I2C_SCL
//nop
//nop
//nop
//nop
stt16 init_timer //i2c_write_byte bit2
if(I2C_SDA)
{
set1 i2c_write_byte.2
}
nop
wait1 I2C_SCL
nop
nop
nop
nop
wait0 I2C_SCL
//nop
//nop
//nop
//nop
stt16 init_timer //i2c_write_byte bit1
if(I2C_SDA)
{
set1 i2c_write_byte.1
}
nop
wait1 I2C_SCL
nop
nop
nop
nop
wait0 I2C_SCL
//nop
//nop
//nop
//nop
stt16 init_timer //i2c_write_byte bit0
if(I2C_SDA)
{
set1 i2c_write_byte.0
}
nop
wait1 I2C_SCL
nop
nop
nop
nop
wait0 I2C_SCL
//nop
//nop
//nop
//nop

//slave NACK
I2C_SDA_OUTPUT //--------I2C SDA input/output switch----------
I2C_SDA_HIGH
stt16 init_timer
wait1 I2C_SCL
nop
nop
nop
nop
wait0 I2C_SCL
//nop
//nop
//nop
//nop
I2C_SDA_INPUT //--------I2C SDA input/output switch----------
nop
nop
stt16 init_timer //END
wait1 I2C_SCL
nop
nop
nop
nop
stt16 init_timer
wait1 I2C_SDA
//nop
//nop
//nop
//nop

//下面代碼用戶可根據(jù)實(shí)際情況進(jìn)行修改,這里是將I2C寫(xiě)入的數(shù)據(jù)取反后放到讀操作位置
i2c_read_byte = ~i2c_write_byte

}

i2c_stop:
I2C_SDA_INPUT
i2c_start_flag = 0 //I2C stop work

ret

//----------------FPPA0-------------------
main0:


.ADJUST_OTP_IHRCR 8MIPS // IHRC/2 = 8MIPS, WatchDog Disable, RAM 0,1 temporary be used
sp = 0x30

disgint
inten = 0

mov a,0b000_11_111 //disable timer
mov t16m,a

delay 200

clkmd.0 = 0 //pa.5 as GPIO

//注意IO口的輸入輸出設(shè)定
pa = 0b1111_1111
pac = 0b0000_0000
paph = 0b1111_1111
pb = 0b1111_1111
pbc = 0b0000_0000
pbph = 0b1111_1111


init_timer = 7768 //從7768進(jìn)行校準(zhǔn)為100ms
mov a,0b100_11_111
mov t16m,a
stt16 init_timer


delay 200

mov a,0
mov intrq,a

i2c_start_flag = 0 //I2C not start work


// adcdi = 0b0000_0100 //pb2 is analog input
// adcc = 0b10_0010_00 //enable ADC, select pb2
// adcm = 0b000_0100_0 //system clock/16
//adcm = 0b000_0111_0 //system clock/128
set1 fppen.1 //eanble FPPA1
clkmd.1 = 1 //enable watch dog
wdreset //clear watch dog

// Xms = 100
// call delayXms

stt16 init_timer
intrq = 0
inten.T16 = 1 //打開(kāi)定時(shí)中斷
engint


main0_loop:
init_timer = 0
wdreset
//用戶可以在這里添加自己想要的任意代碼,這里可以實(shí)現(xiàn)任意一個(gè)普通單片機(jī)能夠是想的功能
goto main0_loop


//----------------FPPA1-------------------
main1:
sp = 0x38
main1_loop:
call i2c_slave
goto main1_loop

程序中的多個(gè)NOP可以用DELAY3代替,用DELAY 指令可以節(jié)省程序空間

I2C啟動(dòng)判斷代碼用下面部分更可靠(2012.12.22)

//wait SDA and SCL high at the same time
while((!I2C_SDA) || (!I2C_SCL))
{
stt16init_timer
nop
nop
nop
nop
}


if(!I2C_SDA)
{
gotoi2c_stop
}
if(!I2C_SCL)
{
gotoi2c_stop
}

代碼已編譯,未調(diào)試


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6067

    文章

    44992

    瀏覽量

    650690
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    簡(jiǎn)單了解I2C接口

    在電子電路的復(fù)雜世界里,各種電路模塊設(shè)備需要相互通信才能協(xié)同工作 ,I2C接口就像是電路模塊設(shè)備間的溝通橋梁,今天就帶大家深入了解它。
    的頭像 發(fā)表于 05-08 14:15 ?923次閱讀
    簡(jiǎn)單了解<b class='flag-5'>I2C</b><b class='flag-5'>接口</b>

    I2C總線復(fù)用

    帝晶智慧屏I2C總線復(fù)用
    的頭像 發(fā)表于 03-11 17:20 ?1417次閱讀

    單片機(jī)I/O接口的傳輸方式

    單片機(jī)(Microcontroller Unit,MCU)作為嵌入式系統(tǒng)的核心部件,其輸入輸出(Input/Output,I/O)接口是實(shí)現(xiàn)與外部設(shè)備數(shù)據(jù)交換的關(guān)鍵。I/O
    的頭像 發(fā)表于 02-02 15:56 ?1079次閱讀

    I2C總線通信原理 如何設(shè)計(jì)I2C總線電路

    、高效的通信接口標(biāo)準(zhǔn)。I2C總線通信原理主要包括以下要點(diǎn): 總線結(jié)構(gòu) : I2C總線僅使用兩條信號(hào)線,即串行數(shù)據(jù)線(SDA)和串行時(shí)鐘線(SCL)。 SDA線路用于傳輸實(shí)際的數(shù)據(jù)信息,而SCL線路則用于同步通信的時(shí)鐘信號(hào)。 通信
    的頭像 發(fā)表于 01-31 15:01 ?1142次閱讀

    I2C總線的優(yōu)缺點(diǎn)分析

    設(shè)備之間的通信,這大大減少了所需的引腳數(shù)量,降低了硬件成本。此外,由于其簡(jiǎn)單性,I2C總線也易于實(shí)現(xiàn)和維護(hù)。 2. 多主機(jī)和多從機(jī)支持 I2C總線支持多個(gè)主機(jī)和多個(gè)從
    的頭像 發(fā)表于 01-17 15:50 ?1168次閱讀

    I2C總線與Arduino的接口示例

    在現(xiàn)代電子設(shè)計(jì)中,I2C總線因其簡(jiǎn)單性和靈活性而受歡迎。它允許多個(gè)設(shè)備共享同一通信線路,從而節(jié)省空間和成本。Arduino,作為一個(gè)多功能的微控制器平臺(tái),自然也支持I2C通信。 I2C
    的頭像 發(fā)表于 01-17 15:34 ?1612次閱讀

    I2C總線的工作模式介紹

    在現(xiàn)代電子系統(tǒng)中,I2C總線作為一種多主機(jī)、多從機(jī)的串行通信協(xié)議,扮演著至關(guān)重要的角色。它允許多個(gè)設(shè)備共享同一總線,進(jìn)行數(shù)據(jù)傳輸,從而簡(jiǎn)化了系統(tǒng)設(shè)計(jì)并降低了成本。 I2C總線的基本特性 I2C
    的頭像 發(fā)表于 01-17 15:32 ?1001次閱讀

    I2C總線與單片機(jī)的連接

    在現(xiàn)代電子系統(tǒng)中,單片機(jī)(MCU)是核心控制單元,而I2C總線作為一種多主機(jī)、多從機(jī)的串行通信協(xié)議,因其簡(jiǎn)單、高效和節(jié)省引腳的特性而被廣泛應(yīng)用于各種電子設(shè)備中。 I2C總線概述
    的頭像 發(fā)表于 01-17 15:18 ?1193次閱讀

    I2C總線應(yīng)用實(shí)例分析

    I2C總線使用兩條線進(jìn)行通信:數(shù)據(jù)線(SDA)和時(shí)鐘線(SCL)。這種雙線制設(shè)計(jì)使得I2C總線能夠在多個(gè)設(shè)備之間共享,而不需要為每個(gè)設(shè)備單獨(dú)布線。 應(yīng)用實(shí)例:溫濕度傳感器 假設(shè)我們正在設(shè)計(jì)一個(gè)智能家居系統(tǒng),需要實(shí)時(shí)監(jiān)測(cè)室內(nèi)的溫濕度。我們選擇使用一個(gè)帶有
    的頭像 發(fā)表于 01-17 15:09 ?755次閱讀

    AN-840: 通過(guò)I2C接口更新代碼

    電子發(fā)燒友網(wǎng)站提供《AN-840: 通過(guò)I2C接口更新代碼.pdf》資料免費(fèi)下載
    發(fā)表于 01-15 16:04 ?0次下載
    AN-840: 通過(guò)<b class='flag-5'>I2C</b><b class='flag-5'>接口</b>更新代碼

    UC-001:MicroConverter I2C兼容接口

    電子發(fā)燒友網(wǎng)站提供《UC-001:MicroConverter I2C兼容接口.pdf》資料免費(fèi)下載
    發(fā)表于 01-15 15:51 ?0次下載
    UC-001:MicroConverter <b class='flag-5'>I2C</b>兼容<b class='flag-5'>接口</b>

    BTB擴(kuò)展接口:LCD、Camera、UART、I2C等|詳解篇

    今天我們來(lái)學(xué)習(xí)的是BTB擴(kuò)展接口的LCD、Camera、UART、I2C詳解,特別分享Air201硬件BTB擴(kuò)展接口相關(guān)內(nèi)容。
    的頭像 發(fā)表于 11-30 09:39 ?1099次閱讀
    BTB擴(kuò)展<b class='flag-5'>接口</b>:LCD、Camera、UART、<b class='flag-5'>I2C</b>等|詳解篇

    RISC V的I2C操作

    接口處理top接口output ? ? ?system_i2c_0_io_sda_writeEnable,output ? ? ?system_i2c_0_io_sda_write,i
    的頭像 發(fā)表于 11-01 11:06 ?733次閱讀

    51單片機(jī)STC8H8K64U通過(guò)RA8889/RA8876如何控制彩屏 I2C源碼下載

    用51單片機(jī)STC8H8K64U驅(qū)動(dòng)彩屏,控制器采用瑞佑RA8889. 使用軟件模擬I2C方式通信,驅(qū)動(dòng)大屏顯示。
    的頭像 發(fā)表于 11-01 11:02 ?1265次閱讀
    51<b class='flag-5'>單片機(jī)</b>STC8H8K64U通過(guò)RA8889/RA8876如何控制彩屏 <b class='flag-5'>I2C</b>源碼下載

    I2C基本指南

    電子發(fā)燒友網(wǎng)站提供《I2C基本指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-10 09:40 ?0次下載
    <b class='flag-5'>I2C</b>基本指南