TITLE " TWO WIRE/I2C BUS INTERFACE WITH PIC16C5x "
;
?LIST P=16C54
;
;************************************************************
;**? Two wire/I2C Bus READ/WRITE Sample Routines of Microchip's
;**? 24Cxx / 85Cxx serial CMOS EEPROM interfacing to a
;**? PIC16C54 8-bit CMOS single chip microcomputer
;**? Revsied Version 2.0 (4/2/92).
;**
;**???? Part use = PIC16C54-XT/JW??????????????????????????????????????????
;**? Note:? 1) All timings are based on a reference crystal frequency of 2MHz
;**??????????? which is equivalent to an instruction cycle time of 2 usec.
;**???????? 2) Address and literal values are read in octal unless otherwise
;**??????????? specified.
;********************************************************
;
;-----------------------------------------------------------------------------
;?????? Files Assignment
;-----------------------------------------------------------------------------
;
PC????? EQU???? 2?????????????? ; Program counter
STAT??? EQU???? 3?????????????? ; PIC status byte
FSR???? EQU???? 4?????????????? ; File Select Register
RA????? EQU???? 5?????????????? ; Port A use to select device address
RB????? EQU???? 6?????????????? ; RB7 = SDA, RB6 = SCL
;
STATUS? EQU???? 08????????????? ; Status register
FLAG??? EQU???? 09????????????? ; Common flag bits register
EEPROM? EQU???? 0A????????????? ; Bit buffer
ERCODE? EQU???? 0B????????????? ; Error code (to indicate bus status)
ADDR??? EQU???? 10????????????? ; Address register
DATAI?? EQU???? 11????????????? ; Stored data input register
DATAO?? EQU???? 12????????????? ; Stored data output register
SLAVE?? EQU???? 13????????????? ; Device address (1010xxx0)
TXBUF?? EQU???? 14????????????? ; TX buffer
RXBUF?? EQU???? 15????????????? ; RX buffer
COUNT?? EQU???? 16????????????? ; Bit counter
;
TIMER0? EQU???? 18????????????? ; Delay timer0
TIMER1? EQU???? 19????????????? ; Delay timer1
;
;
;-----------------------------------------------------------------------------
;???????????????????? Bit Assignments
;-----------------------------------------------------------------------------
;
; Status bits
;
Z?????? EQU???? 2
C?????? EQU???? 0
;
; FLAG Bits
;
ERROR?? EQU???? 0?????????????? ; Error flag
;
; EEPROM Bits
;
DI????? EQU???? 7?????????????? ; EEPROM input
DO????? EQU???? 6?????????????? ; EEPROM output
;
; I2C Device Bits
;
SDA???? EQU???? 7?????????????? ; RB7, data in/out
SCL???? EQU???? 6?????????????? ; RB6, serial clock
;
;END FILES/BITS EQUATE
?PAGE
;
;-----------------------------------------------------------------------------
;?????? Two wire/I2C - CPU communication error status table and subroutine
;-----------------------------------------------------------------------------
;? input? :???? W-reg?? = error code
;? output :???? ERCODE? = error code
;?????????? FLAG(ERROR) = 1
;
;???????? code????????? error status mode
;?????? -------???????? ------------------------------------------------------
;?????????? 1?? :?????? SCL locked low by device (bus is still busy)
;?????????? 2?? :?????? SDA locked low by device (bus is still busy)
;?????????? 3?? :?????? No acknowledge from device (no handshake)
;?????????? 4?? :?????? SDA bus not released for master to generate STOP bit
;-----------------------------------------------------------------------------
;
;Subroutine to identify the status of the serial clock (SCL) and serial data
;(SDA) condition according to the error status table. Codes generated are
;useful for bus/device diagnosis.
;
ERR
?BTFSS?? FLAG,ERROR????? ; Remain as first error encountered
?MOVWF?? ERCODE????????? ; Save error code
?BSF???? FLAG,ERROR????? ; Set error flag
?RETLW?? 0
;
;-----------------------------------------------------------------------------
;?????? START bus communication routine
;-----------------------------------------------------------------------------
;?????? input?? : none
;?????? output? : initialize bus communication
;-----------------------------------------------------------------------------
;
;Generate START bit (SCL is high while SDA goes from high to low transition)
;and check status of the serial clock.
BSTART
?MOVLW?? B'00111111'???? ; Put SCL, SDA line in output state
?TRIS??? RB
;**************************************************************
?bsf???? RB,SDA????????? ;make sure sda is high
;*******************************************************
?BSF???? RB,SCL????????? ; Set clock high
?MOVLW?? 1?????????????? ; Ready error status code 1
?BTFSS?? RB,SCL????????? ; Locked?
?CALL??? ERR???????????? ; SCL locked low by device
?BCF???? RB,SDA????????? ; SDA goes low during SCL high
?NOP???????????????????? ; Timing adjustment
?NOP
?NOP
?BCF???? RB,SCL????????? ; Start clock train
?RETLW?? 0
;
;END SUB
?PAGE
;
;-----------------------------------------------------------------------------
;?????? STOP bus communication routine
;-----------------------------------------------------------------------------
;?????? Input?? :?????? None
;?????? Output? :?????? Bus communication, STOP condition
;-----------------------------------------------------------------------------
;
;Generate STOP bit (SDA goes from low to high during SCL high state)
;and check bus conditions.
;
BSTOP
;*********************************************************
?MOVLW?? B'00111111'???? ; Put SCL, SDA line in output state
?TRIS??? RB
;**************************************************************
?BCF???? RB,SDA????????? ; Return SDA to low
?BSF???? RB,SCL????????? ; Set SCL high
?nop
?nop
?nop
?MOVLW?? 1?????????????? ; Ready error code 1
?BTFSS?? RB,SCL????????? ; High?
?CALL??? ERR???????????? ; No, SCL locked low by device
?BSF???? RB,SDA????????? ; SDA goes from low to high during SCL high
?MOVLW?? 4?????????????? ; Ready error code 4
?BTFSS?? RB,SDA????????? ; High?
?CALL??? ERR???????????? ; No, SDA bus not release for STOP
?RETLW?? 0
;
;END SUB
;
;-----------------------------------------------------------------------------
;?????? Serial data send from PIC to serial EEPROM, bit-by-bit subroutine
;-----------------------------------------------------------------------------
;?????? Input?? :?????? None
;?????? Output? :?????? To (DI) of serial EEPROM device
;-----------------------------------------------------------------------------
;
BITIN
?MOVLW?? B'10111111'???? ; Force SDA line as input
?TRIS??? RB
?BSF???? RB,SDA????????? ; Set SDA for input
?BCF???? EEPROM,DI
?BSF???? RB,SCL????????? ; Clock high
?MOVLW?? 1
?BTFSC?? RB,SCL????????? ; Skip if SCL? is high
?GOTO??? BIT1
?BTFSS?? FLAG,ERROR????? ; Remain as first error encountered
?MOVWF?? ERCODE????????? ; Save error code
?BSF???? FLAG,ERROR????? ; Set error flag
BIT1
?BTFSC?? RB,SDA????????? ; Read SDA pin
?BSF???? EEPROM,DI?????? ; DI = 1
?NOP???????????????????? ; Delay
?BCF???? RB,SCL????????? ; Return SCL to low????
?RETLW?? 0
;
;END SUB
?PAGE
;
;-----------------------------------------------------------------------------
;?????? Serial data receive from serial EEPROM to PIC, bit-by-bit subroutine
;-----------------------------------------------------------------------------
;?????? Input?? :?????? EEPROM file
;?????? Output? :?????? From (DO) of serial EEPROM device to PIC
;-----------------------------------------------------------------------------
;
BITOUT
?MOVLW?? B'00111111'???? ; Set SDA, SCL as outputs
?TRIS??? RB
?BTFSS?? EEPROM,DO
?GOTO??? BIT0
?BSF???? RB,SDA????????? ; Output bit 0
?MOVLW?? 2
?BTFSC?? RB,SDA????????? ; Check for error code 2
?GOTO??? CLK1
?BTFSS?? FLAG,ERROR????? ; Remain as first error encountered
?MOVWF?? ERCODE????????? ; Save error code
?BSF???? FLAG,ERROR????? ; Set error flag
?GOTO??? CLK1??????????? ; SDA locked low by device
;
BIT0
?BCF???? RB,SDA????????? ; Output bit 0
?NOP???????????????????? ; Delay
?NOP
?NOP
CLK1
?BSF???? RB,SCL
?MOVLW?? 1?????????????? ; Error code 1
?BTFSC?? RB,SCL????????? ; SCL locked low?
?GOTO??? BIT2??????????? ; No.
?BTFSS?? FLAG,ERROR????? ; Yes.
?MOVWF?? ERCODE????????? ; Save error code
?BSF???? FLAG,ERROR????? ; Set error flag
BIT2
?NOP
?NOP
?BCF???? RB,SCL????????? ; Return SCL to low
?RETLW?? 0
;
;END SUB
?PAGE
;
;
;-----------------------------------------------------------------------------
;?????? RECEIVE???????? DATA??? subroutine
;-----------------------------------------------------------------------------
;?????? Input?? :?????? None
;?????? Output? :?????? RXBUF = Receive 8-bit data
;-----------------------------------------------------------------------------
;
RX
?MOVLW?? .8????????????? ; 8 bits of data
?MOVWF?? COUNT
?CLRF??? RXBUF
;
RXLP
?RLF???? RXBUF?????????? ; Shift data to buffer
?SKPC
?BCF???? RXBUF,0???????? ; carry ---> f(0)
?SKPNC
?BSF???? RXBUF,0
?CALL??? BITIN
?BTFSC?? EEPROM,DI
?BSF???? RXBUF,0???????? ; Input bit =1
?DECFSZ? COUNT?????????? ; 8 bits?
?GOTO??? RXLP
?BSF???? EEPROM,DO?????? ; Set acknowledge bit = 1
?CALL??? BITOUT????????? ; to STOP further input
?RETLW?? 0
;
;END SUB
;
;-----------------------------------------------------------------------------
;?????? TRANSMIT??????? DATA??? subroutine
;-----------------------------------------------------------------------------
;?????? Input?? :?????? TXBUF
;?????? Output? :?????? Data X'mitted to EEPROM device
;-----------------------------------------------------------------------------
;
TX
?MOVLW?? .8
?MOVWF?? COUNT
;
TXLP
?BCF???? EEPROM,DO?????? ; Shift data bit out.
?BTFSC?? TXBUF,7???????? ; If shifted bit = 0, data bit = 0
?BSF???? EEPROM,DO?????? ; Otherwise data bit = 1
?CALL??? BITOUT????????? ; Serial data out
?RLF???? TXBUF?????????? ; Rotate TXBUF left
?SKPC??????????????????? ; f(6) ---> f(7)
?BCF???? TXBUF,0???????? ; f(7) ---> carry
?SKPNC?????????????????? ; carry ---> f(0)
?BSF???? TXBUF,0
?DECFSZ? COUNT?????????? ; 8 bits done?
?GOTO??? TXLP??????????? ; No.
?CALL??? BITIN?????????? ; Read acknowledge bit
?MOVLW?? 3
?BTFSC?? EEPROM,DI?????? ; Check for acknowledgement
?CALL??? ERR???????????? ; No acknowledge from device
?RETLW?? 0
;
;END SUB
?PAGE
;
;-----------------------------------------------------------------------------
;?????? BYTE-WRITE, write one byte to EEPROM device
;-----------------------------------------------------------------------------
;?????? Input?? :?????? DATAO= data to be written
;?????????????????????? ADDR??? = destination address
;?????????????????????? SLAVE?? = device address (1010xxx0)
;?????? Output? :?????? Data written to EEPROM device
;-----------------------------------------------------------------------------
;
?ORG???? 080???????????? ; The location for BYTE-WRITE routine can be
;?????????????????????????????? ; assigned anywhere between (377-777) octal.
WRBYTE
?MOVF??? SLAVE,W???????? ; Get SLAVE address
?MOVWF?? TXBUF?????????? ; to TX buffer
?CALL??? BSTART????????? ; Generate START bit
?CALL??? TX????????????? ; Output SLAVE address
?MOVF??? ADDR,W????????? ; Get WORD address
?MOVWF?? TXBUF?????????? ; into buffer
?CALL??? TX????????????? ; Output WORD address
?MOVF??? DATAO,W???????? ; Move DATA
?MOVWF?? TXBUF?????????? ; into buffer
?CALL??? TX????????????? ; Output DATA and detect acknowledgement
?CALL??? BSTOP?????????? ; Generate STOP bit
?goto??? wrt_end
;
;
;
;-----------------------------------------------------------------------------
;?????? BYTE-READ, read one byte from serial EEPROM device
;-----------------------------------------------------------------------------
;?????? Input?? :?????? ADDR??? = source address
;?????????????????????? SLAVE?? = device address (1010xxx0)
;?????? Output? :?????? DATAI?? = data read from serial EEPROM
;-----------------------------------------------------------------------------
;
?ORG???? 0C0???????????? ; The location for BYTE-READ routine can be
;?????????????????????????????? ; assigned anywhere between (377-777) octal.
RDBYTE
?MOVF??? SLAVE,W???????? ; Move SLAVE address
?MOVWF?? TXBUF?????????? ; into buffer (R/W = 0)
?CALL??? BSTART????????? ; Generate START bit
?CALL??? TX????????????? ; Output SLAVE address. Check ACK.
?MOVF??? ADDR,W????????? ; Get WORD address
?MOVWF?? TXBUF
?CALL??? TX????????????? ; Output WORD address. Check ACK.
?CALL??? BSTART????????? ; START READ (if only one device is
?MOVF??? SLAVE,W???????? ; connected to the I2C bus)
?MOVWF?? TXBUF
?BSF???? TXBUF,0???????? ; Specify READ mode (R/W = 1)
?CALL??? TX????????????? ; Output SLAVE address
?CALL??? RX????????????? ; READ in data and acknowledge
?CALL??? BSTOP?????????? ; Generate STOP bit
?MOVF??? RXBUF,W???????? ; Save data from buffer
?MOVWF?? DATAI?????????? ; to DATAI file.
?goto??? rd_end
;
;Test program to read and write ramdom
start
?movlw?? 0AE???????????? ;set A2=A1=A0=1
?movwf?? SLAVE?????????? ;?????? /
?movlw?? 2?????????????? ;set r/w loc. = 2
?movwf?? ADDR??????????? ;?????? /
?movlw?? 55????????????? ;write 55 to SEEPROM
?movwf?? DATAO?????????? ;?????? /
?goto??? WRBYTE????????? ;write a byte
wrt_end
?call??? delay?????????? ;wait for write
??? ;operation (internal)
?goto??? RDBYTE????????? ;read back data
rd_end
?movlw?? 55????????????? ;test if read
?xorwf?? DATAI,W???????? ;correct?
?btfss?? STAT,Z????????? ;yes then skip
wrong??
?goto??? wrong
correct
?goto??? correct
;
;At 2.0Mhz, delay = approx. 3mS.
delay
?clrf??? 1F????????????? ;clear last location
dly1
?nop
?nop
?nop
?decfsz? 1F????????????? ;reduce count
?goto??? dly1??????????? ;loop
?retlw?? 0
;
?org???? 0x1FF
?goto??? start
;
?END
PIC的一個讀寫I2C程序
- I2C(120546)
相關(guān)推薦
I2C Labview 解決方法
`各位大蝦,幫忙解決一個問題,我有個芯片是CY8C3246芯片,有I2C接口,需要用Labview來讀寫內(nèi)容,不知道大家是否有做過?或有相同的VI共享下.`
2012-12-13 16:13:01
I2C Master到Master通信可能嗎?
嗨,我有一個項目,一個PIC24FJ256GB210是一個I2C主控器,一個PIC16F18326,一個I2C從機和一個I2C EEPROM。所以,在特殊情況下,必須有可能PIC16給PIC24一個
2018-12-27 16:04:05
I2C讀寫EEPROM寫數(shù)據(jù)子程序調(diào)用時卡住了
_writeByte(addr);//寫低位地址 while (!I2C_xrdy()); I2C_writeByte(data);//寫數(shù)據(jù) I2C_sendStop();delay(5000);]我用I2C讀寫EEPROM,寫了個寫數(shù)據(jù)子程序,調(diào)用時發(fā)現(xiàn)卡住了,位置見上面。請問高手,哪里有問題?謝謝!
2019-01-30 07:46:32
I2C讀寫與使用
這一屆爽是真的爽,hal庫和cubemx節(jié)省一半時間工作量23333終于學(xué)到I2C了,單片機的時候就沒把I2C學(xué)好,現(xiàn)在來惡補,,,這個博主把為什么I2C讀、寫要先設(shè)置0xA1、0xA0講得很到位
2022-01-11 07:12:02
I2C不工作
自己的代碼。我就是不能讓它工作。這是不可能的。這里是我的代碼:對于I2C:主程序:我得到的是255。是的,我嘗試了“0xA0”和“0xA1”作為EEPROM讀寫地址。如果你不能給我一個好的答案,請不要
2019-09-29 07:34:13
I2C不工作是MCC問題嗎?
試圖編寫一個I2C驅(qū)動程序,我在另一個文件中工作,我剛剛移植了這些函數(shù)。PIC12LF1840的后端代碼是使用MCC創(chuàng)建的。我試圖建立與MMA845 2Q加速度計的COMS。我懷疑別針是斷開的,但我
2018-12-20 16:17:26
I2C協(xié)議介紹
文章目錄I2C 調(diào)查標(biāo)準(zhǔn)I2C協(xié)議介紹I2C時序介紹起始信號停止信號重啟信號總線閑信號總線忙信號讀寫信號應(yīng)答信號非應(yīng)答信號標(biāo)準(zhǔn)I2C協(xié)議讀寫介紹I2C寫一個寄存器I2C 讀一個寄存器I2C 連續(xù)寫
2022-01-20 08:04:17
I2C協(xié)議以及I2C讀寫EEPROM
I2C協(xié)議以及I2C讀寫EEPROM實驗文章目錄I2C協(xié)議以及I2C讀寫EEPROM實驗I2C 協(xié)議簡介一、I2C 物理層二、I2C 協(xié)議層2-1 I2C 基本讀寫過程2-2 通訊的起始和停止信號
2021-08-23 08:25:55
I2C協(xié)議的相關(guān)資料推薦
I2C協(xié)議總結(jié)兩個方面物理層電氣特性協(xié)議層I2C基本讀寫過程#寫過程通訊復(fù)合格式通訊信號的判斷通訊的起始和停止信號數(shù)據(jù)有效性地址及數(shù)據(jù)方向響應(yīng)信號通訊過程部分代碼講解總結(jié)**順便找一下玩過
2022-02-23 06:52:10
I2C只發(fā)送地址
你好,我想從我的PIC32 MZ中使用I2C作為主控器。我使用的是和聲樣本共現(xiàn),我只看到第一個地址字節(jié)。我從來沒有看到緩沖區(qū)的其余部分。有人以前有過這個問題嗎?謝謝。 以上來自于百度翻譯 以下
2018-10-15 16:19:21
I2C和輸出比較或PPS有什么聯(lián)系嗎?
我的圖片是:PIC32 MZ2048 EFM144。有了這個PIC我參加LCD(與DMA,定時器,輸出比較),直到今天的一切工作,但我需要參加電容觸摸面板通過I2C。我寫代碼的I2C和通信工作(X
2019-10-11 12:08:28
I2C在SLaveFio期間不工作
你好。我有一個問題,I2C在SLaveFio期間不工作。I2C的讀寫數(shù)據(jù)只工作SLaveFIFO工作結(jié)束。那么我怎么才能解決這個問題呢?
2019-08-29 10:13:39
I2C怎么使用
硬件I2C(中斷方式)以STC8F2K08S2單片機為例一、I2C相關(guān)的寄存器STC8系列單片機硬件I2C使用教程(一)二、I2C中斷相關(guān)的寄存器① I2C中斷源② I2C中斷允許位③ I2C中斷
2021-12-02 08:16:27
I2C總線沖突
遇到總線沖突。你可能會問,為什么在地址被發(fā)送之后設(shè)置停止位?我用它作為一個I2C總線掃描器,我只想知道相應(yīng)的地址是否有一個附加的有源設(shè)備,如果我發(fā)送它的地址,它會告訴我一個知識。我的問題與原始帖子的主要
2019-01-30 13:14:01
I2C總線協(xié)議詳解
成本。總線的長度可高達25英尺,并且能夠以10Kbps的最大傳輸速率支持40個組件。I2C總線的另一個優(yōu)點是,它支持多主控(multimastering), 其中任何能夠進行發(fā)送和接收的設(shè)備都可以成為
2012-02-01 09:56:56
I2C總線是什么
主設(shè)備和從設(shè)備,每一組I2C總線上只能有1個主設(shè)備,主設(shè)備是主導(dǎo)通信的,它能主動讀取各從設(shè)備上的數(shù)據(jù)。而從設(shè)備只能等待主設(shè)備對自己讀寫,如果主設(shè)備無操作,從設(shè)備自已不能操作總線。I...
2021-07-21 09:03:35
I2C擺率控制是什么?
在我的項目中,我利用一種I2c接口芯片(LTC4312)與pic16f1459連接;pic用MSSP i2c主機初始化,預(yù)期工作在50-100Kbit/s到400Kbit/s之間;MSSP的SDA
2019-10-23 13:06:38
I2C模式無效-PIC18F27K40的MSSP外設(shè)
你好2所有,我使用PIC18F26K22多年以來,我也使用了MS2SP在I2C主模式。現(xiàn)在我嘗試使用相同的代碼PIC18F27 K40,MSSP不運行,沒有邊緣上的SCL -平。有沒有人的想法,我
2018-09-07 15:08:07
I2C的用處
收發(fā)設(shè)備,現(xiàn)在被廣泛地使用在系統(tǒng)內(nèi)多個集成電路(IC)間的通訊二、總體流程I2C數(shù)據(jù)傳輸基本過程:1、主機首先發(fā)送開始信號2、主機緊接著發(fā)送從機地址信息(一個字節(jié)),該字節(jié)信息中的最低位為讀寫控制碼:1為讀、0為寫。高7位為從機設(shè)備的器件地址3、從機然后發(fā)出確認信號4、主機開始發(fā)送信號數(shù)據(jù),每當(dāng)
2021-08-20 06:05:46
I2C確認位未發(fā)送是什么原因造成的?
)。我的同事為 LCD 編寫了一個 I2C 應(yīng)用程序,它運行良好,但是當(dāng)相同的代碼應(yīng)用于我們的應(yīng)用程序(PIC32->ESP32S3)時,邏輯圖對我來說似乎不太好。我在下面提供邏輯圖(圖 2
2023-04-13 07:38:07
I2C通信詳解
救!《【STM32-I2C學(xué)習(xí)總結(jié)】STM32:硬件-IIC詳解 , 固件庫編程 , 手把手教你實現(xiàn)IIC》這里是我以前寫的,硬件實現(xiàn)I2C的一個文章,文章末尾有軟件實現(xiàn)I2C的方法,硬件都會了,
2022-02-28 11:24:45
I2c協(xié)議和時序的相關(guān)資料推薦
從設(shè)備adapter i2c 控制器對象數(shù)據(jù)包對象讀寫數(shù)據(jù)設(shè)備樹中添加MPU6050信息內(nèi)核選配添加設(shè)備樹節(jié)點編寫驅(qū)動程序 mpu6050_i2c_drv.cI2c協(xié)議和時序I2c介紹I2C(In...
2022-02-10 06:51:12
I2c的使用求助
I2c的中斷使用的程序,誰有用過,求指導(dǎo)!我的手里有I2C網(wǎng)EEPROM里寫東西的程序,也知道I2C的使用時序,但是不會編寫周立功的模塊zlg7290的程序?所以求助,網(wǎng)上也搜索了一些程序,可是自己改變后還是有問題?求高手指點!
2013-08-25 21:32:14
PIC16F1454 I2C和USB問題
親愛的大家,我成功地用pic16F1454編寫了一個通過I2C讀出壓力傳感器的接口。然后,我在我的C上編寫了一個USB引導(dǎo)加載程序(我從修改來自mmabthrd
2019-08-23 11:45:48
PIC16F1503上I2C的另一個問題
嗨,我在我的I2C程序開發(fā)中遇到了另一個問題。在I2C啟動請求(設(shè)置SEN位)之后,SSP1IF標(biāo)志永遠不會被設(shè)置。我已經(jīng)將代碼提煉成一個非常簡單的順序程序,沒有中斷,并且再次希望有人能夠發(fā)現(xiàn)我
2020-03-25 07:43:02
PIC16F15356的I2C問題
大家好,一個奇怪的問題,MMC配置RC3端口clk和RC4來管理壓力傳感器,一切正常。在同一I2C總線上還連接有語音合成芯片,該芯片具有I2C,但是例如非標(biāo)準(zhǔn)通信不能管理ack。d RC4以模擬方式
2020-03-20 10:18:45
PIC16F1827上的兩個I2C通道
嗨,我希望兩個使用兩個獨立的I2C設(shè)備,集中控制從PIC16F1827。這兩個器件是1)10位微芯片3021ADC和2)10位微芯片4716DAC。我使用ADC的原因是,我正在通過Maxim
2020-04-07 15:25:53
PIC16F1834怎么使用I2C?
嗎?我不知道在哪里搜索。我有一個用PIC18F4550驗證過的源代碼,但是我沒有成功地將它改寫為PIC16F18344。我使用i2c的默認引腳。我認為問題出在in it_i2c()中。代碼驗證
2019-08-21 09:50:45
PIC16F18877的I2C驅(qū)動程序問題
你好,我正在使用32MHZ系統(tǒng)時鐘的PIC16F18877控制器。我想為傳感器APDS9960開發(fā)I2C驅(qū)動程序。我有為APDS9960為PIC32MX控制器工作的I2C固件,它工作得很好。我已經(jīng)為PIOC16F18877移植了這個固件,但是它不工作。這是我的密碼
2020-04-06 14:51:24
PIC18F25K42 I2C錯誤報告
由MCC為PIC18F25K42生成的代碼在I2C驅(qū)動程序中有一個缺陷。代碼不清除I2C停止條件已完成時設(shè)置的PCIF標(biāo)志。結(jié)果,對I2C驅(qū)動程序的背對背調(diào)用可能導(dǎo)致省略停止/啟動條件并將請求組合在一
2020-03-27 10:59:35
PIC18F27K40的i2c問題
親愛的,我有一個問題來解決I2C的問題。我使用的是帶有PIC18F27 K40的MCC。PIC有和ErrATA,但我不認為與I2C有關(guān)。當(dāng)我試圖在EE2PROM上用I2C
2019-04-30 10:15:38
PIC18F47K42的I2C問題
放在軟件模式下,一切正常。為了測試I2C總線,我還用微芯片的XC8編譯器編寫了一個小程序。我使用MCC在引腳RC3和RC4上配置I2C1。當(dāng)我用SurvioSCOP測量信號時,兩個引腳都保持高電平。什么都沒有發(fā)生。下面是我的代碼:有人指出我做錯什么了嗎?謝謝!
2020-04-01 09:32:53
PIC18LF24K40芯片編寫I2C程序時在SCL和SDA線上得到了一個很高的波形
您好,我在PIC18LF24K40芯片上工作,在編寫I2C程序時遇到了問題,盡管遵循了數(shù)據(jù)表中的指令,但是我在SCL和SDA線上得到了一個很高的波形,而不是像預(yù)期的波形。PS:我對PIC是新的,但是
2019-02-14 14:29:44
PIC24FJ1024GB610中MCC生成的I2C代碼存在問題
大家好!我一直在使用I2C與EEPROM 24LC512和RTC DS1307進行通信的應(yīng)用程序。這個應(yīng)用程序最初是為PIC18設(shè)備編寫的,目前我正在通過Explorer16/32板將其功能遷移
2020-04-07 12:56:13
PIC32 I2C主器件多字節(jié)讀取問題
使用PIC32 MX775 FF512L與C32編譯主模式下的I2C,無法從奴隸讀取多個字節(jié)?我在論壇上看到的問題可追溯到2010。有沒有一個簡單的答案來回答這個問題? 以上來自于百度翻譯 以下
2019-04-01 08:01:01
PIC32MK I2C E12和E13由I2C4控制
嗨,我懷疑這個模塊是在新的PIC32 MK上實現(xiàn)的嗎?文檔和勘誤表是空的。有任何指示I2C1,I2C…與引腳有關(guān)。我已經(jīng)測試(“手動”)所有四個通道上的E12和E13(PIC
2018-11-19 10:43:47
PIC32MK I2C引腳如何定義
嗨,我正在繼續(xù)與PIC32 MK的“戰(zhàn)斗”。你知道如何定義I2C引腳嗎?沒有概念I2C1,I2C2…SDA和SCL沒有提到相關(guān)的輸入/輸出表中。順便說一下,SDA引腳是雙向的。是否需要使用“手動
2018-11-20 15:22:54
PIC32MX I2C模塊正確使用RBF位?
RBF位走高。PIC繼續(xù)在SCL上保持一個無限的時鐘。這只發(fā)生在與這個設(shè)備上的寄存器對話時,我可以毫無問題地讀取其他寄存器。我讀取的單個字節(jié)I2C的代碼如下:[EDIT]問題在幾個小時后又出現(xiàn)了。下面
2019-08-29 13:35:06
PIC32MZEF上的I2C驅(qū)動程序異常
我使用的是PIC32 MZEF Rev。B1(I2C硬件模塊,似乎是固定在這個修訂)和I2C和聲驅(qū)動與2X I2C總線和多個客戶端上的FiTS I2C istist.在函數(shù)DRVIII2
2018-11-07 15:41:33
i2c通信協(xié)議
。SDA數(shù)據(jù)線可以收發(fā)數(shù)據(jù)。i2c通信必須是MCU和i2c從設(shè)備之間的雙方通信。一條i2c總線上可以掛載多個i2c從設(shè)備。在進行通信時,必須是MCU和i2c從設(shè)備之間的通信,MCU一次只能和一個i2c
2020-03-06 16:15:03
i2c驅(qū)動無法正常工作
大家好,我正在嘗試與PIC24FJ128GB606接口128x64 I2C的OLED顯示器。我使用MPLABX 4.15和X16 3.15編譯器。并且我從MCC產(chǎn)生了I2C驅(qū)動程序。現(xiàn)在的問題是
2018-09-13 15:24:43
pic32mx支持多主控I2c代碼
這里是我寫的一些代碼,因為我真的需要一個具有多功能多主支持的主接口,并且以全總線速度工作,沒有任何延遲,降低了傳輸速度。提供了一個I2C“驅(qū)動程序”,但它仍然“alpha”,并沒有在多主機環(huán)境中進
2019-06-26 08:59:34
CH32V103基礎(chǔ)教程37-I2C-軟件模擬I2C讀寫EEPROM
前面章節(jié)第14章已經(jīng)進行過硬件IIC讀寫EEPROM的實驗,本章教程將使用軟件模擬IIC讀寫EEPROM,并通過串口調(diào)試助手將讀寫結(jié)果打印顯示。 1、I2C簡介及相關(guān)函數(shù)介紹內(nèi)部集成電路總線(I2C
2023-04-23 16:04:22
CH32V307的 I2C讀寫E2PROM數(shù)據(jù)錯誤怎么處理?
板上接了一塊 FT24C32A 的E2PROM, 掛在在 I2C2, SCL-->PB10, SDA-->PB11, 寫數(shù)據(jù)地址是16位,2字節(jié)同樣的代碼在F4上讀寫正常
2022-09-14 10:11:34
EEPROM I2C協(xié)議的特點與基本讀寫過程
EEPROMI2C協(xié)議I2C物理層的特點I2C的協(xié)議層I2C基本讀寫過程通訊的起始和停止信號數(shù)據(jù)有效性地址及數(shù)據(jù)方向響應(yīng)STM32的I2C特性及架構(gòu)通訊引腳時鐘控制邏輯數(shù)據(jù)控制邏輯整體控制邏輯
2022-01-21 08:57:09
EEPROM與并口的I2C讀寫通訊設(shè)計
的緊湊些。最后將電路固定在一個合適的小塑料盒內(nèi),好了,現(xiàn)在它是我們的試驗器材,等看過后面的內(nèi)容,你會發(fā)現(xiàn)只要為其配上軟件,它就是一個用于讀寫I2C EEPROM 的好工具。 試驗程序編寫: 和其它高級
2008-09-11 10:36:45
Euart和I2c都不工作該怎么辦?
再一次,我在這里。伙計們,在解決了PIC18F2550中的延遲問題之后,我開始重寫我所有的工作庫,從16F到18F。但是當(dāng)我寫了一個程序來讀取24C64內(nèi)存(I2C)并通過EUART將數(shù)據(jù)發(fā)送到PC
2019-08-16 13:06:26
HarmonyOS 驅(qū)動平臺---I2C
1 概述簡介I2C(Inter Integrated Circuit)總線是由Philips公司開發(fā)的一種簡單、雙向二線制同步串行總線。I2C以主從方式工作,通常有一個主設(shè)備和一個或者多個從設(shè)備
2020-09-16 18:54:10
MTK Aandroid 底層驅(qū)動-----I2C讀寫函數(shù)分析
時序中會出現(xiàn)restart信號,它僅僅使用一個消息處理。圖 2 restart模式下對應(yīng)時序 前面所講的camera imagesensor中的i2c讀寫函數(shù)都是工作在非restart模式下的,而很多
2016-09-19 23:49:58
MindSDK下的I2C讀寫24c02測試學(xué)習(xí)資料分享
1、MindSDK下的I2C讀寫24c02測試學(xué)習(xí) * 硬件電路 開發(fā)板上I2C硬件電路 使用PC6和PC7端口的I2C1接口 原作者:meijing
2022-09-02 15:47:17
SPI和I2C如何同時實現(xiàn)兩者?
嗨,朋友們,我在PIC16LF1939上工作。我使用SPI與另一個微控制器通信,我必須使用I2C協(xié)議來發(fā)光LED,因為PIC16LF1939只有一個MSSP,我們?nèi)绾瓮瑫r實現(xiàn)兩者?請讓我知道,如果
2019-03-18 13:51:28
【藍牙4.1試用體驗】實驗七 I2C總線FM24V10讀寫操作(十一)
,建立原理圖組件。我們使用I2C組件,一個定時器組件,使用他來驗證讀寫在否正常,一個輸出port組件,用來控制LED燈指示程序運行正常。3,組件配置,I2C組件其他默認。定時器組件配置4,引腳配置:5,編譯,自動生成相關(guān)文件。6,編寫FM24V10的讀寫程序。FM24V10的讀寫固件源碼:
2015-11-18 22:40:11
【問題匯總】關(guān)于STM32的I2C問題
,100K)后既執(zhí)行24C02的讀寫,完畢后,執(zhí)行另一I2C器件的讀寫。現(xiàn)象1:每次斷電、再重新上電后,程序一直停在24C02的寫過程中,另一片I2C芯片也不響應(yīng);現(xiàn)象2:如果是直接按復(fù)位鍵,則程序可以
2014-03-14 09:45:14
與ICSP引腳復(fù)用時,PIC16F15313的I2C引腳不產(chǎn)生
大家好,我用PIC16F15313做我的項目。我用I2C來控制一個設(shè)備。根據(jù)數(shù)據(jù)表RA1和RA2可以用作I2C。RA1與ICSPCK復(fù)用。編程之后,即使我刪除了PICTIT3調(diào)試器,我也看不到I2C
2020-03-17 11:01:38
為什么從MHC添加I2C模塊后應(yīng)用程序停止?
I2C模塊,其行為是重復(fù)相同的。似乎沒有辦法調(diào)試它,因為一旦程序被下載到目標(biāo),它就停止了。調(diào)試控制臺輸出
2019-08-12 09:12:45
什么是軟件I2C和硬件I2C
23章“I2C–讀寫EEPROM”原理章節(jié))2)閱讀AHT20數(shù)據(jù)手冊,編程實現(xiàn):每隔2秒鐘采集一次溫濕度數(shù)據(jù),并通過串口發(fā)送到上位機(win10)。...
2021-08-23 06:19:16
代碼卡在PIC32 i2c傳統(tǒng)功能IdleI2C1中
您好,代碼陷在PIC32 I2C遺留函數(shù)IDLII2C1.I2C的速度是400 KBPS-外圍時鐘是10MHZ是什么問題?請幫助 以上來自于百度翻譯 以下為原文 hello, Code
2018-11-21 15:33:11
以rk808驅(qū)動為例子講解i2c regmap方式讀寫
I2C讀寫時序regmap i2cIntroRegmap主要目的是減少慢速I/O驅(qū)動上的重復(fù)邏輯,提供一種通用的接口來操作底層硬件上的寄存器.Regmap除了能做到統(tǒng)一的I/O接口,還可以在驅(qū)動
2022-08-11 16:43:02
使用i2c設(shè)備的方法
導(dǎo)言:最近在使用多個i2c設(shè)備時,讀寫出現(xiàn)沖突,我決定使用多個i2c接口,我把攝像頭關(guān)閉后,使用3B+上的兩個i2c同時進行讀寫操作,兩個i2c同時讀寫。一、raspi-config配置1.配置
2022-01-05 06:54:16
使用和聲時,引導(dǎo)加載程序和i2c spi之間是否存在沖突?
嗨,伙計們。我有一個基于PIC32 MX695F512L的板,我想用UART來設(shè)計Bootloader程序,在此之前,我必須初始化一些具有I2C或SPI接口的機載設(shè)備。當(dāng)我在Bootloader
2019-10-22 13:44:45
關(guān)于I2C的讀寫問題
下面兩個程序都是關(guān)于I2C的寫數(shù)據(jù)程序,為什么第二個程序就不行呢??第一個程序:void Write_A_Byte(uchar b) //向 24C16 中寫一字節(jié)數(shù)據(jù){uchar i;for(i=0;i
2017-04-11 10:12:37
分享一個嵌入式linux讀寫24c02的i2c程序
這里分享一個嵌入式linux讀寫24c02的i2c程序ioctl函數(shù)的使用:原型:struct ioctl(struct file *file,unsigned int cmd,unsigned
2021-11-04 07:53:51
單片機的I2C協(xié)議資料分享
EEPROM)。# 一、I2C協(xié)議(讀寫EEPROM)1、SCL2、SDA二、代碼1.i2c.c代碼如下(示例):#include "i2c.h"//IIC配置void I2C_EE_Config(void){I2C_InitTypeDefI2C_InitStructur
2022-01-25 08:14:31
啟用i2c pic24h后程序計數(shù)器丟失
大家好。我嘗試用XC16編譯器在PIC24HJ128GP202微控制器中實現(xiàn)I2C模塊。在用MPLAB X中的調(diào)試器跳過I2C打開函數(shù)后,程序計數(shù)器在設(shè)置允許位高之后丟失。這是我在調(diào)試器控制臺中得到
2019-03-04 15:41:10
哪個驅(qū)動程序實現(xiàn)I2C和勘誤表最好?
設(shè)置的一個組合看起來比另一個“更好”嗎?我需要談?wù)剰奈业?b class="flag-6" style="color: red">PIC32 MZ和諧項目MC23017系列(I2C)16 GPIO擴展器。更新速率不會太快,所以我會嘗試保持通信& lt=100千赫茲,以盡量減少錯誤的問題。
2019-10-31 09:16:03
哪里可以找到PIC18F4550的I2C庫?
您好,這是我第一次使用PIC和編程它,我有一些關(guān)于I2C圖書館的問題。我在哪里可以找到一個I2C的圖書館為我的PIC18F45 50?或者我在哪里可以找到一條引線?經(jīng)過搜索,我發(fā)現(xiàn)了很多不同的東西
2019-04-29 13:23:08
在harmony 2.04中怎么使用I2C靜態(tài)驅(qū)動程序
大家好!我試圖在靜態(tài)2.04中使用靜態(tài)I2C驅(qū)動程序,經(jīng)過一天的工作,我甚至不能使SCL/SDA線處于空閑狀態(tài),更不用說傳輸任何東西(簡單地切換PIOS是有效的),但是我的設(shè)置是PIC32嵌入式連接
2019-01-02 16:44:13
如何讀寫使用適用于CYUSB驅(qū)動I2C總線數(shù)據(jù)
你好,我與CyPress FX2 USB控制器一起工作。我有董事會認可的CySalk應(yīng)用程序。我找的代碼實例講述了如何讀寫使用適用于CYUSB驅(qū)動I2C總線數(shù)據(jù),但找不到任何東西。有人能給我指出正確
2019-03-25 10:28:43
如何使用I2C設(shè)備驅(qū)動接口開發(fā)應(yīng)用程序
的 2 個 GPIO 自行編寫程序模擬 I2C 總線協(xié)議實現(xiàn)同樣的功能。RT-Thread 提供了一套 I/O 設(shè)備管理框架,它把 I/O 設(shè)備分成了三層進行處理:應(yīng)用層、I/O 設(shè)備管理層、底層驅(qū)動
2022-08-18 10:54:29
如何使用PIC32 I2C模塊處理從地址
對于如何使用PIC32 I2C模塊處理從地址,我有點困惑。我不使用MATLAB編譯器或庫——所以引用我的一個庫是沒有價值的。在任何情況下,我有一個微芯片PAC1720(電流傳感器)從設(shè)備,根據(jù)所選值
2020-04-26 12:50:35
如何做一個簡單的I2C驅(qū)動程序并對其進行測試
的幫助下我設(shè)計了一個只使用一個內(nèi)置I2C模塊的組件。MUX四種不同的I2C總線。我覺得它很有用。這種方法的缺點當(dāng)然是速度。限值100kbs.對該模塊做了一個簡單的I2C驅(qū)動程序,并對其進行了測試。有人
2019-07-19 09:32:37
如何利用512k通過I2C將外部EEPROM連接到我的PIC32MX?
你好!所以我有一個外部EEPROM,512k通過I2C連接到我的PIC32MX。現(xiàn)在,我想建立一個引導(dǎo)加載程序,它讀取EEPROM并閃爍PIC的程序內(nèi)存。簡單!在和諧1.081中,您可以選擇I2C
2019-07-22 06:05:46
如何用pic16f145x通用IO引腳模擬I2c
在我的應(yīng)用程序中,我計劃使用通用的Io管腳來模擬i2c……與我的i2c芯片(如PCF8574、ADS7828)通信……我已經(jīng)成功地在一些C51系列單片機上實現(xiàn)了i2c,但我相信在微芯片上會
2019-07-26 14:29:14
如何用dsp標(biāo)準(zhǔn)I2C接口接ADS1110?
Structure'里有兩個地址(如下):從機地址、數(shù)據(jù)地址,而ads1110只有從機地址。這個結(jié)構(gòu)體還不能修改,不知道怎么處理,能不能自己寫一個結(jié)構(gòu)體,但數(shù)據(jù)不知道怎么接受。I2C 的讀寫程序都用到了這個數(shù)據(jù)地址如下:
2019-10-24 08:04:48
如何通過i2c連續(xù)讀寫eeprom?
我用verilog自制了一個i2c模塊,將電路下載到fpga中,在讀寫eeprom時出現(xiàn)問題,不能連續(xù)讀寫,如果單獨讀寫一個字節(jié),即隨機讀寫一個字節(jié)功能是正常的,連續(xù)讀寫和隨機讀寫有什么區(qū)別?
2023-03-29 10:22:13
怎么使用PIC10F200模擬I2C
你好,我想通過I2C來描述一個小型OLED顯示器。我在匯編中編寫了一個程序,它應(yīng)該模擬I2C,這是我的邏輯分析儀軟件上的樣子(你可以在一個新的標(biāo)簽中打開它,使它看起來更大):ACK不一定來自奴隸
2019-05-05 13:08:18
怎么使用PIC18F46K22的I2C通信
嗨,伙計們,我正在學(xué)習(xí)使用我的PIC18F46K22的I2C通信。我想讀和寫一個RTCC。是否有一個教程或鏈接,我可以工作,可以幫助我學(xué)習(xí)如何使用MCC生成的函數(shù)的I2C公文? 以上來自于百度翻譯
2019-04-08 07:54:51
探討一下GD32VF103 I2C從機模板
GD32VF103 I2C從機模板由TaterLi2019年12月15日作為I2C從機程序,關(guān)鍵變量aReceiveBuffer以及關(guān)鍵常量I2C0_SLAVE_ADDRESS7,第一個是I2C設(shè)備
2022-01-05 06:02:55
求助一個I2C問題
我寫了一個I2C讀取的函數(shù),用最簡單的查詢,首先我已經(jīng)證明該函數(shù)是可以正常運行,然后給他改了一下,添加了一個變量I2C_TypeDef* I2Cx,想讓他可以被任何I2C口讀取。然后我把I2Cx賦值
2014-09-05 15:22:53
測試I2C程序出現(xiàn)24C64不可以正常讀寫是何原因?如何解決?
你好,測試I2C程序出現(xiàn),24C02可以正常讀寫,但24C64卻不可以。閱讀代碼,咨詢一下問題,rt_size_t rt_i2c_master_send(struct
2023-04-17 17:03:55
硬件I2C的說明
使用硬件I2C的說明STM32F0使用硬件I2C作為master,與外設(shè)通信,code步驟如下:配置GPIO引腳功能初始化I2C外設(shè)調(diào)用I2C的外設(shè)庫函數(shù)進行讀寫I2C下面是詳細代碼: 1. 配置
2021-08-04 07:03:00
I2C總線器件的C51讀寫程序
I2C總線規(guī)范與I2C器件C51讀寫程序
本文簡要介紹了I2C總線,并給出了I2C器件的C51讀寫程序,極大的方便了大家對I2C總線的學(xué)習(xí)和設(shè)計應(yīng)用。程序設(shè)計采用模塊化設(shè)計,方便向
2009-03-25 09:21:2962
I2C總線規(guī)范與I2C器件C51讀寫程序
I2C總線規(guī)范與I2C器件C51讀寫程序:本文簡要介紹了I2C總線,并給出了I2C器件的C51讀寫程序,極大的方便了大家對I2C總線的學(xué)習(xí)和設(shè)計應(yīng)用。程序設(shè)計采用模塊化設(shè)計,方便向目標(biāo)板的
2009-08-22 17:51:0791
PIC單片機讀寫I2C實例源程序一
PIC單片機讀寫I2C實例源程序一
; this route is used I2C EESROM write and; read; addressing mode is indirectSTART BSF RB_C,SDA NOP MOVFW RB_
2009-01-16 11:47:102613
PIC:讀寫I2C程序
PIC:讀寫I2C程序
I2CCTR EQU 10HI2CAD EQU 11HREG3 EQU 12HREG2 EQU 13HREG1 EQU 14HREG0 EQU 15H
GENR0 EQU 8HGENR1 EQU 9HB
2009-01-16 11:47:451050
PIC單片機的I2C 24LC02 C讀寫程序
PIC單片機的I2C 24LC02 C讀寫程序
1 I2C總線特點 I2C總線最主要的優(yōu)點是其簡單性和有效性。由于接口直接在組
2009-10-30 08:27:245261
使用PIC877單片機進行I2C讀寫測試的程序資料免費下載
本文檔的主要內(nèi)容詳細介紹的是使用PIC877單片機進行I2C讀寫測試的程序資料免費下載
PIC16F7877向24LC256有高地址的存儲芯片中寫數(shù)據(jù),然后再讀出
2018-12-27 08:00:0011
評論
查看更多