Flash Memory คือหน่วยความจำที่ใช้ในการเก็บข้อมูลแบบไม่ล่วงละเว้น (non-volatile memory) โดยสามารถเขียนและอ่านข้อมูลได้หลายครั้งโดยไม่ต้องใช้ไฟฟ้าเพิ่มเติมเพื่อรักษาข้อมูล แต่เมื่อเขียนข้อมูลลงใน Flash Memory จะต้องทำการลบข้อมูลเก่าก่อนเพื่อเขียนข้อมูลใหม่ การเขียนข้อมูลลงใน Flash Memory จะต้องใช้คำสั่งพิเศษและต้องระวังการเขียนข้อมูลที่อยู่เดียวกันซ้ำๆ ซึ่งอาจทำให้ข้อมูลเก่าถูกลบไปด้วย โดย Flash Memory ในไมโครคอนโทรลเลอร์

CH32V003 มีความจุ 16KB และใช้เทคโนโลยี FPEC (Flash Program and Erase Controller) ในการเขียนและลบข้อมูล โดยสามารถเขียนข้อมูลได้ทีละคำสั่ง 2 ไบต์ และสามารถตรวจสอบความถูกต้องของข้อมูลที่เขียนด้วยการสร้างตัวตรวจสอบ CRC (Cyclic Redundancy Check) ได้
Register และ Address ที่เกี่ยวข้อง
โดยทั่วไปแล้ว MCU จะทำงานได้เมื่อเราเขียน Code เข้าไปความคุมค่าต่างๆใน Address ที่ระบุการทำงานในจุดนั้นๆ ในที่นี้จะเป็นส่วนของ FLASH Control โดยมีรายละเอียดดังนี้

ในการกำหนดค่าการทำงานของ FLASH Control จะมี Address เริ่มต้นที่ 0x8000 3FC0 – 0x8000 3FFF ใช้สำหรับเขียนข้อมูลต่างๆ

โดยหลักๆแล้ว ในการเปิดการทำงานของวงจรต่างๆ จะใช้ Register ขนาด 32bit ที่ชื่อ FLASH_ ตามด้วยชื่อย่อการทำงานต่างๆ
คำย่อต่างๆ จะใช้งานอยู่ใน Code ที่ทาง WCH ให้มา เราสามารถใช่คำย่อเหล่านี้ในการอ้างอิงหรือเขียนโปรแกรมได้










Code ที่เกี่ยวข้อง
code ที่เกี่ยวข้องกับการควบคุม Register RCC จะอยู่ที่ไฟล์ ch32v00x_flash.h และ ch32v00x_flash.c ใน folder ที่อยู่ใน Framework

CH32V003 : https://shopee.co.th/witawat57/23167328296
สนับสนุนร้านค้าของเรา เพื่อจะได้เป็นกำลังใจเขียนบทความใหม่ๆ