CH365與CH423的I2C通信問(wèn)題

用CH365設(shè)計(jì)的一塊PCI卡,板卡可以正常識(shí)別,且可以讀寫(xiě)卡上的雙口RAM芯片,但是CH365與CH423之間的I2C通信始終不能通信。 CH365的SCL使用默認(rèn)的A15引腳,且CH365的SCL(A15)和SDA(D7)直接與CH423的SCL和SDA相連,沒(méi)有接上拉電阻。因?yàn)橹皇钦{(diào)試,用WinDriver進(jìn)行讀寫(xiě)測(cè)試,首先向0xF7(設(shè)備地址和命令寄存器)中寫(xiě)入0x44(設(shè)置低8 位開(kāi)漏輸出命令),向0xF4(數(shù)據(jù)存取寄存器)寫(xiě)入0xC3,最后向0xF5(控制和狀態(tài)寄存器)寫(xiě)入0x01開(kāi)始I2C通信傳輸,等待讀取0xF5(控制和狀態(tài)寄存器)為0x00后,應(yīng)該是IC0-IC8既有不輸出也有輸出低電平的引腳,但是實(shí)際測(cè)量發(fā)現(xiàn)都沒(méi)有輸出 此外,向0xF7(設(shè)備地址和命令寄存器)中寫(xiě)入0x4D(讀取雙向輸入輸出命令),向0xF5(控制和狀態(tài)寄存器)寫(xiě)入0x01開(kāi)始I2C通信傳輸,等待讀取0xF5(控制和狀態(tài)寄存器)為0x00后讀取0xF4(數(shù)據(jù)存取寄存器),發(fā)現(xiàn)讀入的值都為0并沒(méi)有反映出實(shí)際輸入信號(hào) 不知道我的硬件連接上有誤還是讀寫(xiě)程序上有誤,就是不能實(shí)現(xiàn)CH365與CH423的通信,麻煩幫我看下有什么問(wèn)題,謝謝

CH365與CH423通過(guò)I2C接口連接,總的來(lái)說(shuō)可以用模擬I2C時(shí)序或者硬件I2C時(shí)序來(lái)控制. A15和D7是硬件I2C時(shí)序的接口,在軟件上要對(duì)I/O空間F4/F5/F6/F7訪問(wèn) 如果你選擇模擬I2C,你可以選擇其他的信號(hào)線來(lái)模擬 硬件上直接連接就可以應(yīng)該不會(huì)有什么問(wèn)題


BOOL WINAPI CH365mWriteI2C( // 向I2C接口寫(xiě)入一個(gè)字節(jié)數(shù)據(jù) ULONG iIndex, // 指定CH365設(shè)備序號(hào) UCHAR iDevice, // 低7位指定I2C設(shè)備地址 UCHAR iAddr, // 指定數(shù)據(jù)單元的地址 UCHAR iByte ) // 待寫(xiě)入的字節(jié)數(shù)據(jù) { UCHAR mByte; if ( CH365mWriteIoByte( iIndex, & dllIoBaseAddr[ iIndex ] -> mCh365I2cDev, (UCHAR) ( iDevice << 1 | 0x00 ) ) ) { // 設(shè)備地址和命令 if ( CH365mWriteIoByte( iIndex, & dllIoBaseAddr[ iIndex ] -> mCh365I2cAddr, iAddr ) ) { // 設(shè)定地址 if ( CH365mWriteIoByte( iIndex, & dllIoBaseAddr[ iIndex ] -> mCh365I2cData, iByte ) ) { // 待寫(xiě)入的數(shù)據(jù) if ( CH365mReadIoByte( iIndex, & dllIoBaseAddr[ iIndex ] -> mCh365I2cCtrl, &mByte ) ) { // 讀取控制和狀態(tài) mByte |= 0x01; // 位0置1則啟動(dòng)操作 if ( CH365mWriteIoByte( iIndex, & dllIoBaseAddr[ iIndex ] -> mCh365I2cCtrl, mByte ) ) { // 開(kāi)始寫(xiě)操作 while ( mByte & 0x01 ) CH365mReadIoByte( iIndex, & dllIoBaseAddr[ iIndex ] -> mCh365I2cCtrl, &mByte ); // 等待寫(xiě)操作完成 CH365DelayUS( 4 ); // 延時(shí)4uS作為兩次I2C操作的間隔 return( TRUE ); } } } } } return( FALSE ); }


謝謝! 1) CH365的A15和D7與CH423的SCL和SDA直接相連是否可以? 2) 2樓程序中的iAddr地址指的是什么地址?對(duì)應(yīng)到CH423中應(yīng)該是什么值?CH423的操作只有兩個(gè)字節(jié),一個(gè)是各操作的命令字節(jié)1,一個(gè)是各操作的真正數(shù)據(jù),這些對(duì)應(yīng)到上面的這個(gè)函數(shù)的話怎么去設(shè)置每個(gè)輸入?yún)?shù)的值呢?


1-可以 2-是數(shù)據(jù)單元地址,比如操作EEPROM,往哪和地址寫(xiě)/讀數(shù)據(jù) 3-可以不要該參數(shù)


1-請(qǐng)查看CH423芯片說(shuō)明書(shū)5.7節(jié),有詳細(xì)說(shuō)明 2-針對(duì)CH423可以對(duì)CH365mWriteI2C函數(shù)進(jìn)行改動(dòng)(去掉設(shè)備地址和命令 去掉設(shè)定地址) 也可以模擬I2C(參考CH423IF.C)


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频