STM32F0在讀寫SPI Flash時的一些注意事項

最近項目使用F0芯片操作W25Q32 Flash芯片, 通過SPI進行驅動, 之前在F4進行過驅動調試, 直接拿過來也就用了, 開始時並無異常, 這兩天發現讀寫有時候會觸發硬件異常, 經排查發現是讀寫的內存問題, 開始懷疑是Keil的BUG, 到目前才搗鼓明白是F0的內存的特殊性~!, F0的內存訪問當雙字節訪問時內存地址必須是偶數值, 即需要內存對齊, 如果訪問內存不是偶數地址那麼就會觸發硬件異常, 最後的解決辦法是在Flash芯片驅動文件中申請一塊內存用於專門讀寫轉換, 聲明該內存時需要注意確保爲雙字節對齊的, 如下聲明:

__align(2) BYTE m_Cache[PAGE_SIZE];

這樣就解決問題了....

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章