簡體   English   中英

STM32-I2C-寫入順序數據

[英]STM32 - I2C - Write Sequential Data

我正在使用512KB的AT24C512 EEPROM和我的STM32

我可以使用一次寫入128字節的數據

HAL_I2C_Mem_Write(&_EEPROM24XX_I2C,0xa0,Address,I2C_MEMADD_SIZE_16BIT,(uint8_t*)data,size_of_data,100)

但是問題是我想在剛剛寫入的數據之后寫入更多數據,但是EEPROM將替換數據,因為地址相同

那我該如何跳過書面地址?

這個答案不是關於將HAL與I2C一起使用,但希望它能對您有所幫助

只需檢查數據表(我查看STM32F0),您就會看到限制為255個字節(寄存器CR2:NBYTES),我不確定HAL中是否還有其他限制,但是使用直接訪問寄存器可以發送255個字節立即或將其分段,然后發送您想要的數量。

對於分段,有CR2:RELOAD位,如果設置了該位,則最后不會停止傳輸,並且可以更新下一個NBYTES,..當您設置最后一個字節塊(將適合NBYTES)然后清除位CR2:RELOAD。

這有一個缺點,即每255個字節將中斷您的訪問。

我認為您應該查看AT24C512數據表第7頁。

如果將超過128個數據字發送到EEPROM,則數據字地址將“翻轉”,並且先前的數據將被覆蓋。 寫入期間的地址“翻轉”是從當前頁面的最后一個字節到同一頁面的第一個字節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM