- 2022-06-24
-
回复了主题帖:
活动入选名单公布:基于沁恒USB PD受电协议芯片CH224 DIY创意秀
个人信息无误,确认可以完成活动计划
- 2022-06-06
-
加入了学习《2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍》,观看 1GHz 主频的单片机!
-
回复了主题帖:
【平头哥RVB2601创意应用开发】+音乐频谱
lugl4313820 发表于 2022-6-6 06:03
交完作业了,恭喜!
前段时间疫情没心思搞,解封了赶工出来的,还是有好多问题的
- 2022-06-05
-
上传了资料:
【平头哥RVB2601创意应用开发】+音乐频谱
-
发表了主题帖:
【平头哥RVB2601创意应用开发】+音乐频谱
本帖最后由 90houyidai 于 2022-6-5 23:27 编辑
作品名称:【平头哥RVB2601创意应用开发】+音乐频谱
作者:90houyidai
项目背景
RVB2601采用平头哥低功耗,32位RISC-V玄铁E906处理器,搭载AliOS 物联网操作系统。RVB2601开发板板载JTAG 调试器,WiFi&BLE 芯片W800,音频ADC-ES7210,音频DAC-ES8156,128x64 OLED 屏幕,RGB 三色指示灯,用户按键,及兼容Arduino 的扩展接口。可应用于智慧家居、影音播控、电子玩具、环境监测、健康医疗、教育学习等领域。
作品简介
本设计由RISC-V单片机CH2601、硅麦、音频ADC-ES7210、128x64 OLED 屏幕组成。通过板载硅麦拾取音乐音频,对音频信号进行FFT变换,对音频信号进行量化处理,然后将随音乐变化产生的不同频谱显示到OLED显示器上。
系统框图
1、电源
第一路从USB处获取电源,经DCDC转换成3.3V提供给CH2601和OLED屏幕;
第二路从USB处获取电源经BOOST电路转换为13V供OLED背光电路使用;
第三路将DCDC转换之后的3.3V电压通过LDO降压至1.2V供CH2601使用;
2、调试电路
JTAG调试电路
串口调试电路
3、时钟和复位电路
4、屏幕接口电路
5、ADC-ES7210电路
6、硅麦电路
软件处理流程
本作品在官方GUI例程上移植完成,使用Lvgl的进度条控件完成频谱的显示,从CSI设备驱动中获取ADC采样数据,对采样的数据进行FFT变换后得到各频段幅值,然后分级量化显示到屏幕上
视频及源码链接
https://v.youku.com/v_show/id_XNTg3NTkyODIxMg==.html
源码
https://download.eeworld.com.cn/detail/90houyidai/623792
项目总结
感谢平头哥和EEworld提供这次体验risc-v单片机的机会,本次的主角CH2601确实比较适合IoT领域,配合aos能够事半功倍。只是CDK的编译速度和编译环境还需要更多的优化,对浮点运算的支持没有找到合适的介绍。
通过这次项目简单的入门了aos,同时对lvgl也有了进一步的了解,对于音频处理也多了一份理解。
分享的帖子
平头哥RVB2601创意应用开发】1、例程体验——音乐播放器
- 2022-05-30
-
加入了学习《平头哥RVB2601创意应用开发_LoRa网关无线上位机_sonicfirr》,观看 平头哥RVB2601创意应用开发_LoRa网关无线上位机_sonicfirr
-
回复了主题帖:
【平头哥RVB2601创意应用开发】1、例程体验——音乐播放器
nmg 发表于 2022-5-27 08:49
可以拍个播放成功的小视频,孤勇者 一会找找听听
好的,我之后试试
-
回复了主题帖:
【平头哥RVB2601创意应用开发】1、例程体验——音乐播放器
freebsder 发表于 2022-5-27 17:59
孤勇者现在很流行呀。
《爱你》也一样
-
回复了主题帖:
【平头哥RVB2601创意应用开发】1、例程体验——音乐播放器
Jacktang 发表于 2022-5-27 07:46
为什么还要参照player_demo里的read_me文档进行播放控制命令,,,
因为不熟悉aos的命令
- 2022-05-26
-
发表了主题帖:
【平头哥RVB2601创意应用开发】1、例程体验——音乐播放器
本帖最后由 90houyidai 于 2022-5-26 17:26 编辑
第一次使用RISC-V的芯片
按照《RVB2601 开发板快速上手手册》可以快速搭建开发环境
安装平头哥的CDK进行开发,简单容易上手
打开例程,我选择player_demo进行首次体验
app/src目录下有5个文件:分别是app_main.c、cli_cmd.c、exception_handler.c、init.c、player_demo.c
app_main.c:为主文件,含有网络事件回调处理函数和mian入口函数
cli_cmd.c:命令行文件,注册控制台命令
exception_handler.c:网络错误时事件处理回调函数
init.c:初始化文件
player_demo.c:音频播放处理文件
使用例程时,首先需要将init.c文件中第36行,修改wifi-ssid和wifi-password
netmgr_config_wifi(hdl, wifi_ssid, strlen(wifi_ssid), wifi_psw, strlen(wifi_psw));
wifi名称的字符长度和密码的字符长度也需要对应修改,此处坑了10分钟
接着就可以编译工程,并下载到FLASH中运行
第一次编译的时间有点长,需要耐心等待
Download到Flash后需要手动复位下板子,当然也可以到工程设置中将FLASH里的Reset and Run勾上
这样板卡会在Download结束后自动重启
打开串口助手,可以收到板子打印的log输出,显示是否链接上WiFi,链接成功之后会回显
wifi-ssid、psw、从无线路由获得的IP地址
首先选择平头哥的测试网站,进行PING测试,说明外网已经联通
然后参照player_demo里的read_me文档进行播放控制命令
最后一首孤勇者送给所有上海抗疫的人
player play https://music.163.com/song/media/outer/url?id=1901371647.mp3
- 2022-02-12
-
发表了主题帖:
【GD32L233C-START评测】+猜猜下次哪个灯会亮
GD32L233C 含有真随机数发生器模块(TRNG)能够通过连续模拟噪声生成一个32 位的随机数值。
操作步骤在手册里有详细说明,如下图
主函数
uint32_t random_data = 0, random_lastdata = 0;
uint8_t retry = 0;
/* configure systick */
systick_config();
/* turn on the oscillator */
rcu_osci_on(RCU_IRC48M);
if(ERROR == rcu_osci_stab_wait(RCU_IRC48M)){
while(1){
}
}
/* initilize the LEDs, USART and key */
gd_eval_led_init(LED1);
gd_eval_led_init(LED2);
gd_eval_led_init(LED3);
gd_eval_led_init(LED4);
gd_eval_com_init(EVAL_COM);
gd_eval_key_init(KEY_WAKEUP, KEY_MODE_GPIO);
/* print out the clock frequency of system, AHB, APB1 and APB2 */
printf("\r\nCK_SYS is %d", rcu_clock_freq_get(CK_SYS));
printf("\r\nCK_AHB is %d", rcu_clock_freq_get(CK_AHB));
printf("\r\nCK_APB1 is %d", rcu_clock_freq_get(CK_APB1));
printf("\r\nCK_APB2 is %d", rcu_clock_freq_get(CK_APB2));
/* show example introduce */
printf("============ Gigadevice TRNG poll mode demo ============ \r\n");
/* configure TRNG module */
while((ERROR == trng_configuration()) && retry < 3) {
printf("TRNG init fail \r\n");
printf("TRNG init retry \r\n");
retry++;
}
printf("TRNG init ok \r\n");
/* get the first random data */
random_lastdata = trng_get_true_random_data();
while(1) {
if(SET == gd_eval_key_state_get(KEY_WAKEUP)) {
delay_1ms(50);
if(SET == gd_eval_key_state_get(KEY_WAKEUP)) {
/* check wherther the random data is valid and get it */
if(SUCCESS == trng_ready_check()) {
random_data = trng_get_true_random_data();
if(random_data != random_lastdata) {
random_lastdata = random_data;
printf("Get random data: 0x%08x \r\n", random_data);
} else {
/* the random data is invalid */
printf("Error: Get the random data is same \r\n");
}
gd_eval_led_off(LED1);
gd_eval_led_off(LED2);
gd_eval_led_off(LED3);
gd_eval_led_off(LED4);
switch(random_data%4)
{
case 0:gd_eval_led_on(LED1);break;
case 1:gd_eval_led_on(LED2);break;
case 2:gd_eval_led_on(LED3);break;
case 3:gd_eval_led_on(LED4);break;
default:break;
}
}
}
while(RESET == gd_eval_key_state_get(KEY_WAKEUP)) {
}
}
}
随机数模块检查
uint32_t timeout = 0;
FlagStatus trng_flag = RESET;
ErrStatus reval = SUCCESS;
/* check wherther the random data is valid */
do {
timeout++;
trng_flag = trng_flag_get(TRNG_FLAG_DRDY);
} while((RESET == trng_flag) && (0xFFFF > timeout));
if(RESET == trng_flag) {
/* ready check timeout */
printf("Error: TRNG can't ready \r\n");
trng_flag = trng_flag_get(TRNG_FLAG_CECS);
printf("Clock error current status: %d \r\n", trng_flag);
trng_flag = trng_flag_get(TRNG_FLAG_SECS);
printf("Seed error current status: %d \r\n", trng_flag);
reval = ERROR;
}
/* return check status */
return reval;
随机数模块配置
ErrStatus reval = SUCCESS;
/* TRNG module clock enable */
rcu_periph_clock_enable(RCU_TRNG);
/* TRNG registers reset */
trng_disable();
trng_enable();
/* check TRNG work status */
reval = trng_ready_check();
return reval;
按下开发板上的按键K2(Wakeup),LED1-LED4将会随机电量一盏灯
- 2022-02-11
-
发表了主题帖:
【GD32L233C-START评测】+开箱
这次的评测有点晚,虽然板卡从发货到收到只用了两天时间,官方淘宝店发货快,快递也很给力
包装好大一个,开发板被贴在了盒子底部,这种打包方式太新颖了,很低碳很环保
mini的usb现在很少见了,想找根线还是比较难的
左右两侧的usb口不提供供电功能,调试时需要两根USB线
如果GD-LINK能虚拟出个串口就比较方便调试了
初始上电运行的是跑马灯程序,LED1-LED4循环点亮
demo包中的模板程序则是LED4闪烁
代码中LED的端口定义有些问题需要注意更改
国产单片机同质化竞争,还是需要厂商能够细致一些,不仅是演示代码手册也一样
-
回复了主题帖:
MS8211 笔形万用表拆解
还带NCV,不错
-
回复了主题帖:
线里面干扰 如何隔离
串口的线再加层编织屏蔽,不知道会不会有改善
- 2021-12-13
-
回复了主题帖:
拆解一个非常先进的负离子空气净化器
我有一个,还没拆,某厂的赠品
- 2021-11-13
-
回复了主题帖:
关于STC8A8K64S4A12EEPROM的分配
ena 发表于 2021-11-11 16:10
嗯,但是如果重新下载程序后,应该也会把未用的FALSH区填充为FF
stc-isp 勾选下次不更新硬件设置,可以保证EEPROM的数据不丢失
- 2021-11-09
-
回复了主题帖:
关于STC8A8K64S4A12EEPROM的分配
实际使用FLASH兼做eeprom使用,两者之和总量固定
- 2021-08-25
-
加入了学习《ADI应用之旅—电池管理及智慧储能篇》,观看 3.紧凑安静:小型电气化解决方案
-
加入了学习《ADI应用之旅—电池管理及智慧储能篇》,观看 1.电池管理系统:完整信号链
- 2021-08-24
-
回复了主题帖:
灯哥基于esp32的开源FOC电机驱动资料(不足百元,可自行搞DIY)
应该没含电机的价格吧