guangods 发表于 2020-11-19 10:19

【RISC-V MCU CH32V103测评】+自制MP3播放器

本帖最后由 guangods 于 2020-11-19 11:19 编辑

今天早上收到顺丰快递,打开一看,心仪已久的沁恒开发板到了。冬天绵绵细雨下,开启沁恒RISC单片机之旅。开箱,雨天,光线不太好,大家凑合着看看吧。

带了杜绑线,可以直接连接主板与调试器了。



主板,用的就是RISC的单片机,就是这次想了解的型号,另外,也可以作为了解国产单片机的尝试。

WCH-Link调试器,名称第一次见,类似于j-link吧。
头贴,先介绍这么多吧,关于评测,结合自己手头的模块,正好有个mp3模块+功放,这样可以做个简单的mp3控制播放器,但可能不限于mp3功能吧,主要看进度吧,还有结稿日期吧。

guangods 发表于 2020-11-19 11:15

本帖最后由 guangods 于 2020-11-19 11:21 编辑

开发步骤:1、先熟悉下开发环境,装好MounRiver Studio,连接好硬件环境(上面开箱给的一张小卡片上,有连接线图),如图: 2、将开发包里的点灯程序复制到开发目录下的user文件夹下,编译,下载,就可以了。成功了,整个过程,没有任何卡顿。另外,点灯程序用的是PA0,所以需要一条杜绑线连接到LED1口。点灯效果如下图:总结:挺顺利的,资料很全面,只要顺着资料弄,就可以了。另外,打开串口助手,可以实现串口打印输出,不用再接任何串口线,用wch-link就可以实现串口通讯了。

Cyluo 发表于 2020-11-19 11:28

和题主差不多进度,实验楼下收到板子。早上对着图接了link和串口线。刚刚烧录完demo程序,在串口终端可以输出Hello world了。用的开发环境1.3版本里自带的Terminal串口终端,挺实用方便的

guangods 发表于 2020-11-21 15:35

guangods 发表于 2020-11-19 11:15
开发步骤:1、先熟悉下开发环境,装好MounRiver Studio,连接好硬件环境(上面开箱给的一张小卡片上,有连 ...

实验2实现触摸按键控制灯
上次实现了灯和串口打印,基本的框架其实就建立好了,在此框架基础上,加上触摸按键的程序就可以了,在main.c文件中改一下就行了。
#include "debug.h"

/* Global define */
#define TKEY_CR   ADC1->CTLR1
#define TKEY_CH   ADC1->RSQR3
#define TKEY_SR   ADC1->RDATAR

/* Global Variable */


/*******************************************************************************
* Function Name: GPIO_Toggle_INIT
* Description    : Initializes GPIOA.0
* Input          : None
* Return         : None
*******************************************************************************/
void GPIO_Toggle_INIT(void)
{
GPIO_InitTypeDefGPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}

void Touch_Key_Init(void)
{
    ADC_InitTypeDef ADC_InitStructure;
    GPIO_InitTypeDef GPIO_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE );
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE );

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    RCC_ADCCLKConfig(RCC_PCLK2_Div6); //设置ADC时钟分频为6分频
    ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;   //配置ADC为独立模式
    ADC_InitStructure.ADC_ScanConvMode = DISABLE;      //设置在单通道模式下执行转换
    ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;//设置在单次模式下执行转换
    ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //设置转换不是由外部触发启动
    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //设置ADC数据右对齐
    ADC_InitStructure.ADC_NbrOfChannel = 1;                //顺序进行规则转换的ADC通道的数目
    ADC_Init(ADC1, &ADC_InitStructure);                  //根据ADC_InitStructure中指定的参数初始化ADC1寄存器

    ADC_Cmd(ADC1, ENABLE);
    TKEY_CH =0x00000002;   // TouchKey Channel
    TKEY_CR |= 0x51000000;   // Enable TouchKey
}

u16 Touch_Key_Adc(u8 ch)
{
u16 val;

while(!(TKEY_CR & 0x08000000));
val = (u16)TKEY_SR;

    return val;
}
void sys_init(void)
{
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
Delay_Init();
    USART_Printf_Init(115200);
    GPIO_Toggle_INIT();
    Touch_Key_Init();
}

/*******************************************************************************
* Function Name: main
* Description    : Main program.
* Input          : None
* Return         : None
*******************************************************************************/
int main(void)
{
        u8 i=0;
        u16 ADC_val;
        sys_init();
    printf("SystemClk:%d\r\n",SystemCoreClock);
    printf("key ctl led0\r\n");
        while(1)
{
      ADC_val = Touch_Key_Adc(ADC_Channel_2);
//      printf( "TouchKey:%04d\r\n",ADC_val );
      Delay_Ms(180);
      if(ADC_val & 0x8000)
      {
            printf("This value is discarded\r\n");
      }
      else if (ADC_val<2000)
      {
            Delay_Ms(20);
            if(ADC_val<2000)
            {
                GPIO_WriteBit(GPIOA, GPIO_Pin_0, (i==0) ? (i=Bit_SET):(i=Bit_RESET));
            }
      }


        }
}

基本的效果如图:

guangods 发表于 2020-11-22 15:56

guangods 发表于 2020-11-21 15:35
实验2实现触摸按键控制灯
上次实现了灯和串口打印,基本的框架其实就建立好了,在此框架基础上,加上触摸 ...

实验4,基本搭完祼奔程序的框架
周日,抽出一下午的时间来弄,基本上搭完了框架,和之前写的stm32的程序很相似。并且,弄了个gitee上远程库,这样,晚上在家也可以弄了。

暂时先不上代码了,现在看起来,还是有些乱。

jimmhu 发表于 2022-12-15 10:29

这个功能设计的非常棒呢。            

sanfuzi 发表于 2022-12-15 14:22

可以实现什么格式的文件解析?            

janewood 发表于 2022-12-15 15:02

I2S的接口有吗?            

uytyu 发表于 2022-12-15 16:23

这个是否需要其他模块的配置?            
页: [1]
查看完整版本: 【RISC-V MCU CH32V103测评】+自制MP3播放器