You are on page 1of 5

CÁC LOẠI BỘ NHỚ TRÊN VI ĐIỀU KHIỂN

RAM FLASH EEPROM


• Tốc độ đọc ghi nhanh • Tốc độ ghi chậm • Tốc độ ghi chậm
• Bị mất dữ liệu khi mất điện • Tốc độ đọc nhanh • Tốc độ đọc nhanh
• Không bị mất dữ liệu khi mất điện • Không bị mất dữ liệu khi mất điện
• Ghi theo page hoặc sector • Đọc ghi theo từng byte
• Đọc theo 2 byte hoặc 4 byte

STM32 chỉ sử dụng bộ nhớ RAM và FLASH

Ngọc Tuấn
TỔ CHỨC BỘ NHỚ FLASH
Tham khảo tại đây:
https://www.st.com/resource/en/programming_manual/pm0075-stm32f10xxx-flash-memory-microcontrollers-
stmicroelectronics.pdf

STM32 có bộ nhớ 128KB được thành 128 page mỗi page là 1KB.
Như vậy mỗi lần mốn ghi thì ta phải ghi theo page là 1KB 1 lần Ngọc Tuấn
QUY TRÌNH GHI VÀO BỘ NHỚ FLASH

void flash_write(uint32_t addr,uint16_t value)


{
if(FLASH->CR&FLASH_CR_LOCK)
{
FLASH->KEYR=FLASH_KEY1;
FLASH->KEYR=FLASH_KEY2;
}
FLASH->CR|=FLASH_CR_PG;
*(__IO uint16_t *)addr=value;
while(FLASH->SR&FLASH_SR_BSY);
FLASH->CR&=~FLASH_CR_PG;
}

Lưu ý: trước khi muốn ghi vào flash vào page nào, ta phải xóa toàn bộ page tương ứng
Ngọc Tuấn
QUY TRÌNH XÓA BỘ NHỚ FLASH

void flash_erase(uint32_t page)


{
if(FLASH->CR&FLASH_CR_LOCK)
{
FLASH->KEYR=FLASH_KEY1;
FLASH->KEYR=FLASH_KEY2;
}
FLASH->CR|=FLASH_CR_PER;
FLASH->AR=page;
FLASH->CR|=FLASH_CR_STRT;
while(FLASH->SR&FLASH_SR_BSY);
FLASH->CR&=~FLASH_CR_PER;
FLASH->CR&=~FLASH_CR_STRT;
}

Ngọc Tuấn
ĐỌC BỘ NHỚ

uint16_t flash_read(uint32_t addr)


{
return *(__IO uint16_t *)addr;
}

Ngọc Tuấn

You might also like