做EEPROM的測試中發現一些奇怪問題。器件讀寫地址不唯一。
在做EEPROM的AT24Cxx實驗中發現對晶片讀寫地址的不唯一問題。測試主要針對AT24C02和AT24C1024兩款晶片進行測試,採用的是官方韌體庫的硬體I2C程式設計。
問題描述:
做過AT24Cxx的都知道,在AT24Cxx寫資料時候,程式中需要一條傳送7位的從器件寫地址(I2C_Send7bitAddress(I2Cx, WriteAdrr, I2C_Direction_Transmitter););在讀地址的時候,需要先發送一條7位的從器件寫地址隨後再發條7位器件的讀地址(I2C_Send7bitAddress(I2Cx, ReadAdrr, I2C_Direction_Receiver);)。
但是在地址的選擇上卻發現了一個問題,針對AT24C02和AT24C1024兩款晶片中發現寫地址和讀地址不不是唯一的,而是由一個範圍選擇。這個,,按正常來說應該是唯一的,正常來說讀寫地址都是0xAx。x一般和晶片引腳的接地和高電平有關,最後一位是讀寫的選擇,寫為0,讀為1。不過測試結果卻不這樣,如下:
測試結果:測試中的AT24C02寫地址(WriteAdrr)的可選擇範圍為:0xA0---0xAF。
測試中的AT24C02寫地址(ReadAdrr)的可選擇範圍為:0xA0---0xAF。
測試中的AT24C1024寫地址(WriteAdrr)只能為:0xA0。(這個正常些)
測試中的AT24C1024寫地址(ReadAdrr)的可選擇範圍為:0xA0---0xA3。
只要按照上面選擇,晶片都是成功的讀寫資料。。。+_+ 確實很納悶,無法解釋,但結果能實現。如果有知道其中原因的可以留言哦,謝謝!
(注:AT24C02,AT24C1024的地址選擇引腳都是接地狀態)