【RISC-V MCU CH32V103测评】CH32V103C8T6芯片初印象
[复制链接]
拿到EEWORLD寄过来的RISC-V内核的开发板之后,我先做了一个点亮LED的实验,基本上比较顺利,能够看到LED正常的闪亮。说明芯片的引脚驱动能力还算不错。江苏沁恒公司在国内接口芯片市场是做的比较好的一家公司。我想整颗芯片应该是没有问题的吧。因为没有全面的测试所以不敢下结论:整个芯片的所有引脚都正常。但就这个实验来说是没有问题的。
从上面的图可以看出这颗芯片的总线和ARM的结构使用的是相同的结构,那就是说RISC的外设编程也应该是差不多的。继续探索可以发现系统的时钟树也是相似的。
从图中可以看出来系统的主时钟HSI和实时RTC时钟是分开的。系统中有内部 8MHz 的 RC 振荡器作为默认的 CPU 时 钟。系统时钟源 HSI 默认开启,在没有配置时钟或者复位后,内部 8MHz 的 RC 振荡器作为默认的 CPU 时钟,随后可以另外选择外部 4~16MHz 时钟或 PLL 时钟。当打开时钟安全模式后,如果 HSE 用作系统时 钟,此时检测到外部时钟失效,系统时钟将自动切换到内部 RC 振荡器,同时 HSE 和 PLL 自动关闭;对于关闭时钟的低功耗模式,唤醒后系统也将自动地切换到内部的 RC 振荡器。如果使能了 时钟中断,软件可以接收到相应的中断。从上文的描述可以看出:系统在启动时是能够配置是否可以使用外部时钟源的。这个设计和ARM的设计是一样的。
所以在编程时,可以通过配置PLL参数来给总线时钟设定工作频率。由此可以猜测系统初始化的过程:
1、设置是否使用外部时钟源HSI
2、根据时钟源的频率,设定PLL的系数。也就设定了总线的工作频率,当你搞定时钟设置后,就可以设置外设了。
3、根据PLL的参数可以计算出总线的工作率,从而设置定时器、USB、UART、SPI、I2C、PWM、ADC、DAC等外设的工作频率。
4、设置各种外设的其它工作参数就可以了。
5、设置外设的引脚和工作状态。
但是当我打开程序模板时发现是这样的。
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
Delay_Init();
USART_Printf_Init(115200);
printf("SystemClk:%d\r\n",SystemCoreClock);
printf("This is printf example\r\n");
while(1)
{
}
}
啊代码这么少,惊讶!哦这么简单看来我是多虑啦。
|