1.寫在前面
學習單片機或者從事嵌入式開發(fā)的,對于EEPROM絕不會陌生,尤其的24系列的EEPROM很是經(jīng)典,如AT24C02、AT24C16等。 驅動起這個系列的EEPROM,可以說是輕而易舉,各類教程、源碼、驅動都可以輕松找到并作稍微改動即可使用。
2.EEPROM頁寫算法
驅動起一片EEPROM,實現(xiàn)的功能不外乎就是讀、寫,不多贅述。在寫過程中,有一個“頁寫”功能,如果是大量數(shù)據(jù)寫入,采用“頁寫”功能會大大提高效率。記得以前學習單片機的時候,遵循的是某開發(fā)板的教程,其中的“頁寫”算法過于復雜,包括現(xiàn)在看來依然是比較累贅,所以已經(jīng)把好多人搞懵逼。而且網(wǎng)絡上大部分的源碼幾乎都是大同小異,質量不算高。大體思路是這樣的:用邏輯語句實現(xiàn),檢查寫入總數(shù)據(jù)字節(jié)數(shù)是否大于一頁,開始地址是否為頁的開始,剩下未滿一頁的數(shù)據(jù)怎樣處理。邏輯上來說,這樣處理還是非常好理解,但顯得過于累贅。邏輯用數(shù)學語句描述,則是算法,下面則是這樣的實現(xiàn)。
工作后,從Linux系統(tǒng)的驅動源碼中發(fā)現(xiàn)了EEPROM的“頁寫”新方法,幾句代碼即把前面一堆邏輯描述清楚,第一次體會到算法的神奇之處。作了一些修改,關鍵代碼如下。
char ee_24clxx_writebytes(u16 write_addr, char* pwrite_buff, u16 writebytes)
{
u8 write_len,page_offset;
char error = 0;
while(writebytes > 0)
{
page_offset = EE24CLXX_PAGESIZE - (write_addr % EE24CLXX_PAGESIZE); /*EE24CLXX_PAGESIZE為頁大小,如24c16為16*/
write_len = writebytes > page_offset ? page_offset : writebytes;
i2c_24clxx_write(write_addr,pwrite_buff, write_len); /*寫一頁函數(shù)*/
writebytes = writebytes - write_len;
if(writebytes > 0)
{
pwrite_buff = pwrite_buff + write_len;
write_addr = write_addr + write_len;
i2c_24clxx_waitstandby(0); /*頁寫判忙,FRAM則不用*/
}
}
return error;
}
3.參考源碼
[1] https://github.com/Prry/drivers-for-mcu
上一篇:關于STM8S IAR 無法下載程序,以及無法進去中斷的問題
下一篇:STM32F030 硬件I2C驅動 AT24C16
推薦閱讀
史海拾趣
隨著電源管理技術的不斷成熟,ADPOW公司開始將技術應用于更多領域,推出了一系列創(chuàng)新產品。這些產品不僅在性能上有所提升,更在外觀設計、用戶體驗等方面進行了優(yōu)化。同時,公司積極拓展市場,與多家電子設備制造商建立合作關系,將產品廣泛應用于手機、電腦、家電等領域。
Brite-Led Optoelectronics Inc公司自創(chuàng)立之初,便專注于LED技術的研發(fā)與應用。在一次關鍵的技術突破中,公司成功開發(fā)出一種高效、穩(wěn)定的LED芯片,其亮度與壽命均遠超當時市場上的同類產品。這一技術突破迅速為Brite-Led贏得了市場認可,奠定了其在LED行業(yè)的領先地位。隨著該技術的不斷迭代和完善,Brite-Led的產品逐漸廣泛應用于照明、顯示、背光等多個領域。
BLACK&DECKER一直致力于產品革新和專利申請。1914年,公司為世界第一臺配有槍式手柄、扳機開關和通用馬達的便攜式手電鉆申請了專利。這一發(fā)明極大地提高了工作效率,并在市場上取得了巨大的成功。此后,BLACK&DECKER不斷推出創(chuàng)新產品,如1946年發(fā)明的世界上第一臺專為家用消費者設計的便攜式電鉆,以及后續(xù)的電動籬笆剪、全絕緣電鉆等一系列重要發(fā)明。
DDK公司在發(fā)展過程中,不僅注重技術創(chuàng)新和品質提升,還非常注重市場布局的智慧。公司根據(jù)市場需求和競爭態(tài)勢,靈活調整產品結構和市場策略,不斷開拓新的市場領域。同時,DDK公司還積極與國內外知名企業(yè)合作,共同開發(fā)新產品、新技術,共同拓展市場份額。這種市場布局的智慧,讓DDK公司在電子行業(yè)中始終保持領先地位。
隨著國內市場的飽和,Calmos Systems Inc公司開始將目光投向國際市場。公司制定了詳細的國際化戰(zhàn)略,包括市場調研、產品定位、銷售渠道建設等方面。公司派遣專業(yè)團隊前往海外市場進行考察和交流,了解當?shù)厥袌鲂枨蠛臀幕攸c。同時,公司還積極尋求與國際知名企業(yè)的合作機會,共同開拓國際市場。在國際化戰(zhàn)略的推動下,公司的業(yè)務范圍不斷擴大,國際市場份額逐年提升。
隨著智能家居市場的興起,ElectronicsCorp看到了巨大的潛力。公司投入大量資金研發(fā)智能家居設備和技術,并與多家知名家居品牌合作推出了一系列智能家居解決方案。這些解決方案不僅提供了便捷的智能家居體驗,還注重用戶隱私保護和數(shù)據(jù)安全。通過不斷創(chuàng)新和優(yōu)化產品體驗,ElectronicsCorp在智能家居領域取得了顯著突破,并成為全球智能家居市場的領軍企業(yè)之一。
本人設計的工業(yè)儀表,遇到這樣的問題:輸入信號0-20MV。當用手觸摸輸入端子的時候,顯示值會波動,這是什么干擾(好象是串模干擾),如何解決?注明:信號是經(jīng)過了2個模擬開關(CD4051),由OP07放大 再采樣。… 查看全部問答∨ |
|
LPC1114 datasheet深度解析LPC1100低功耗設計的七個秘密以LPC1100產品進行設計32位MCU開發(fā)全攻略上32位MCU開發(fā)全攻略下LPC1000 系列 Q&A及支持 … 查看全部問答∨ |
pxa3XX 從CF卡上啟動nk.bin 的bootloader 請問各位大俠有誰做過pxa310或者pxa270的bootloader 要求從CF卡啟動nk.bin 我應該用什么軟件來編譯,用wce6.0 還是ARM提供的AXD 是不是wce6.0下生成bootimage.nb0 就是bootloader 我用仿 ...… 查看全部問答∨ |
我在SD卡里面創(chuàng)建一個“我們.txt”文件,結果在PC機上看到文件名為“컒쏇.txt”。 創(chuàng)建“我們.txt”文件,并給此文件里面寫一段中文,里面的中文都很正常。就是文件名為“컒쏇.txt” 不過用FileScanName函數(shù)可以 ...… 查看全部問答∨ |
設計資源 培訓 開發(fā)板 精華推薦
- 意法半導體與高通合作開發(fā)的Wi-Fi/藍牙模塊交鑰匙方案正式量產及重要應用案例成功落地
- 超逸達攜手培風圖南為先進工藝提供高效、精準的RC提取
- Wi-Fi 8:開啟極高可靠性 (UHR) 連接的新紀元
- Proximus Global旗下公司BICS推出eSIM Hub,簡化全球企業(yè)物聯(lián)網(wǎng)部署
- 高階智駕輔助系統(tǒng)下沉!12.98萬的車標配城市NOA
- 深港攜手,車聯(lián)網(wǎng)協(xié)同進化揭秘,兩地打出了哪些組合拳?
- Matter-over-Thread 智能鎖借助 Nordic 無線連接實現(xiàn)智能家居生態(tài)系統(tǒng)的互操作性
- XENSIV第四代磁傳感器支持最高達到ASIL B級要求的汽車功能安全應用
- 藍牙核心規(guī)范6.1正式發(fā)布,隱私性和能效實現(xiàn)新提升
- 車輛區(qū)域控制架構關鍵技術——趨勢篇