⾚菟V307彩蛋之可配置Flash和SRAM
⾚菟V307(CH32V307)是⼀款RISC-V内核的MCU,搭载的是沁恒⾃研RISC-V内核青稞V4F,最⾼主频144MHz,⽀持单精度浮点运算(FPU)。通常官⽹介绍Flash⼤⼩为256 KB,SRAM⼤⼩为64 KB。仔细阅读应⽤⼿册发现,其Flash和SRAM的⼤⼩⽀持配置,具体配置项如下:
192 KB Flash + 128 KB SRAM224 KB Flash + 96 KB SRAM256 KB Flash + 54 KB SRAM288 KB Flash + 32 KB SRAM
彩蛋1
RAM最⾼可配置到128 KB,直接翻倍,可以撸起袖⼦敲代码啦,再也不⽤担⼼RAM不够啦~
其实⾚菟V307内部有⼀块320 KB SRAM,分为A、B两块,A、B块的⼤⼩由⽤户选择字的user的SRAM_CODE_MODE 位决定,A块负责存放⽤户代码,B块留作单⽚机真正的SRAM,每次上电运⾏时,内部⾃动从Code Flash中加载A块⼤⼩的⽤户代码运⾏。当然⽤户代码的实际Flash和SRAM⼤⼩不要超出配置的范围,否则会导致程序⽆法运⾏等问题。
实际在操作Flash时,也不会有Flash等待的问题。
彩蛋2
细⼼的⼩伙伴或许会发现,V307 Flash最⼤配置为288 KB,⽽Code Flash的⼤⼩为488 KB,这也是隐藏的彩蛋哦,剩下的200 KB Flash可以当作存储⽤,不过需要注意该处Flash等待的问题。
配置⽅法
既然⾚菟V307的Flash和SRAM是可配置的,那么聊聊配置的⽅法吧!
(1)WCHISBTool配置
step 1:切换启动模式,BOOT0 = 1,BOOT1 = 0
step 2:通过WCHISPTool⼯具配置⽤户选择字,具体步骤见下图step 3:切换启动模式,BOOT0 = 0,BOOT1 = 0
(2)⽤户代码配置
typedef enum{
FlASH_192_SRAM_128 = 0, FLASH_224_SRAM_96, FLASH_256_SRAM_64, FLASH_288_RAM_32} FLASH_SRAM_DEFIN;
//note: this operation will take effect after reset
void Config_Flash_SRAM(FLASH_SRAM_DEFIN SetFlashSRAM){
uint8_t UserByte = FLASH_GetUserOptionByte() & 0xff; //get user option byte switch(SetFlashSRAM) {
case 0:
UserByte &= ~(0xc0); // SRAM_CODE_MODE = 00 break; case 1:
UserByte &= ~(0xc0); // SRAM_CODE_MODE = 00 UserByte |= 0x7f; // SRAM_CODE_MODE = 01 break; case 2:
UserByte &= ~(0xc0); // SRAM_CODE_MODE = 00 UserByte |= 0xbf; // SRAM_CODE_MODE = 10 break; case 3:
UserByte |= 0xff; // SRAM_CODE_MODE = 11
break; default: break; }
FLASH_Unlock();
FLASH_ProgramOptionByteData(0x1ffff802, UserByte); FLASH_Lock();}
/********************************************************************* * @fn main *
* @brief Main program. *
* @return none */
int main(void){
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); Delay_Init();
USART_Printf_Init(115200);
printf(\"SystemClk:%d\\r\\n\
Config_Flash_SRAM(FLASH_288_RAM_32); //配置Flash为288 KB,SRAM为32KB ,复位后⽣效
printf(\"userByte = %02x \\r\\n\ while(1) { ; }}
注意以上两种配置⽅式完成后,还需要同步⽤户⼯程代码的ld链接⽂件中Flash 和 SRAM的⼤写,与⽤户选择字配置的⼤⼩保持⼀致。需要了解RISC-V MCU ld链接⽂件的可以查看该贴:
因篇幅问题不能全部显示,请点此查看更多更全内容