0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【南京中科微CSM32RV20开发板试用体验】南京中科微CSM32RV开发板使用SPI驱动墨水屏测评

开发板试用精选 来源:开发板试用 作者:电子发烧友论坛 2022-11-30 10:54 次阅读
本文来源电子发烧友社区,作者:ALSET, 帖子地址:https://bbs.elecfans.com/jishu_2248799_1_1.html

芯片概述
CSM32RV20 是一颗基于RISC-V 指令的32位国产低功耗芯片,芯片内置了一个4k字节的SRAM。它可以以字节、半字(16位)或全字(32位)方式访问,支持4种低功耗模式,最低功耗小于1uA。可以按低电源消耗、启动时间和可用的唤醒源的组合方式,来选取一个最佳的方案来选定一个低功耗模式,实现不同场景下的低功耗应用。非常适合物联网环境下的针对各种场景的应用的MCU计算处理的需求,给嵌入式开发带来更加灵活的选择,能够实现更多特色功能的电子设计。
芯片主要特性
poYBAGICD4OAewEXAAGUlKCGy2M302.png

图1. 芯片架构图
● 内置 RISC-V RV32IMAC 内核(2.6 CoreMark/MHz);
● 最高 32MHz 工作频率;
● 内置 4kB 的 SRAM;
● 内置 8B 的 ALWAYS 寄存器,能在掉电模式 2 下保存数据;
● 内置 4~40kB 的嵌入式 FLASH,512B 的 NVM;
● 内置 2 个 SPI MASTER;
● 内置 1 个 I2C MASTER;
● 内置 4 个 UART 支持最高 1Mbps;
● 内置 2 个tiMER,每个 TIMER 支持 4 路互补 PWM 输出;
● 内置 1 个快速的高精度 13/14/15/16bit ADC,集成 1.2V 高精度基准;
● 宽 ADC 输入电压范围:0 ~ VDD(VDD ≤ 4.8V);
● ADC 支持 11 个输入通道,最多支持 9 个触摸按键
● 内置 3 个快速比较器
● 内置低压检测模块;
● 内置 RF 检测模块;
● 最多支持 30 个 GPIO 和 16 个外部中断;
● 内置硬件看门狗
● 支持 4 种低功耗模式,最低功耗小于 1uA(看门狗工作);
● 内置 32 位真随机数发生器;
● 支持串口和无线 ISP 在线升级(无线 ISP 需外接 Si24R1);
● 支持 JTAG 2 线调试接口
● 工作电压范围:1.8 ~ 5.5V;
● 支持 4x4mm QFN32 或 TSSOP20 封装。
芯片引脚图
芯片引脚图如图2所示,芯片有两种分装,一种为尺寸为TSSOP20 / 6.5mm*6.4mm*1.0mm封装,另外一种是QFN32 / 4mm*4mm*0.8mm封装。两者差别是前者引脚为20脚,后者为32脚,后者比前者IO资源更丰富,同时封装体积更小,适合小体积要求产品的开发。
pYYBAGICD4SACczaAAFgEQ3W2Ho198.png
图2CSM32RV20芯片引脚图
芯片功能描述
这里QFN32的芯片为测试对象,该芯片所有外设功能被引出。该芯片引脚功能描述如图3所示。
pYYBAGICD4aAObzfAAQG-k2o2wA772.png
图3CSM32RV20芯片引脚功能描述
最小开发板
原厂提供了最小开饭,开发板将芯片的所有引脚已2.54mm排针引出。外接一颗CH34N USB转串口芯片,通过Type-C 接口与PC连接。同时板子上有3.3v/5.1v开关的选择,通过拨动开关可以选择不同的工作电压,可见此MCU可以在这两种电压下工作。开发板采用串口方式下载,J-Link调试器进行调试,板上右侧4根排针即为接J-Link的接口,需要注意的是J-Link需要支持v11版本以上的。
poYBAGICD4iAckHWAAP5aXKmc18836.png
图4CSM32RV20开发板
开发环境配置
开发板开发主要开发语言为c/c++, 开发工具为CSMStudio,CSMStudio是集成开发环境,集成代码编辑,编译,连接,调试仿真为一体。在Win10上安装完CSMStudio后,打开开发工具如图5所示。
pYYBAGICD4qAZkTnAAFQCesPHyM948.png
图5 CSMStudio IDE 集成开发工具
安装好CSMStudio后,直接通过菜单“文件”创建一个新工程,创建时选择CSM32RV20芯片,即可创建新工程,然后编译,在工程 default 目录下成功生成 elf 目标文件,如图6所示。
poYBAGICD4uATT6qAAHM2fFzHlg460.png
图6 CSMStudio IDE 创建测试工程
编译得到elf文件后,通过CSM提供的下载工具 CSMISP 进行下载。安装好CH34N窗口驱动和CSMISP软件。安装完CSMISP启动后如图7所示。
poYBAGICD42AGojaAAFhQFgrmXY075.png
图7 CSMISP PC下载调试工具
安装完CSM_ISP后,设置好MCU型号,串口号和通讯速度即可连接到开发板。可以通过检测MCU型号来检测与开发板是否连接正常,点击检测MCU型号并且按开发板复位键,后会在下载信息窗口出现如图8所示,表示已和开发板连接成功。
pYYBAGICD4-AVwtrAAHTpBvmn7k746.png
图8 CSMISP 检测MCU型号成功
在确认下载工具与开发板连接正常后,再点程序文件,选择编译好的elf文件后,在调试信息里会显示程序文件加载成功。
poYBAGICD5GAMB69AAHogj-Paxc656.png
图9 程序文件加载成功
再点下载/编程按钮,且按开发板复位键,在调试信息里会程序下载和flash刷写过程,如一切顺利,则显示程序下载成功。如果显示失败,可以重复下载动作几次,也能获得下载成功。下载过程如图10所示。
pYYBAGICD5OATd-fAAH8fWsXmCM421.png
图10 下载编程到板子上成功
下载目标程序到板子上后,按按开发板复位键,程序就会被运行,默认创建的测试工程是一个点亮 LED的代码,程序在串口助手打印出信息,开发板上可以见到LED闪烁,如图11所示。到此整个开发、编译、下载和串口调试过建立程完成。
poYBAGICD5aAbw9_AAQNG1GYBoc709.png
图11 按reset键程序在板子上运行成功
应用测试描述
此次测试目标,我们根据次芯片低功耗的特点,搭配电子墨水显示屏,使用纽扣电池或锂电充电电池的应用场景作为应用测试目标。电子墨水屏具有掉电保持显示内容,驱动功耗低等优点,方案可用于物联网现场数据采集显示、电子价签、智能工牌等应用。此次配合测试使用的是GDEW027W3一款2.7寸黑白两色的电纸屏, 屏幕分辨率为264x176,像素点为0.2毫米,屏幕显示对比度高,刷新速度快,温度适应范围宽,体积也很小巧。
测试硬件连接
该墨水屏采用SPI4线串口方式通讯,根据其使用说明,它与CSM32RV20 开发板连接电路如图12所示。
poYBAGICD5iAcMkDAAHLMG6ChHA666.png
图12 CSM32RV20与GDEW027W3墨水屏连接电路图
物理连接使用CSM32RV20 SPI1通讯,SPI1的定义是:SCK为GPIOA PIN2,MISO为GPIOA PIN3 ,MOSI为GPIOA PIN4, 其它墨水屏需要的端口可以从空闲的端口选用,这里PA5,PA6为串口,因此这里依次使用的CS - PA7,DC – PA8, RES-PA9, BUSY PA10,这样连线即可。实际接线如图13图14所示。
poYBAGICD5qAHNDIAASG1tAdYPg845.png
图13 CSM32RV20与GDEW027W3墨水屏连接图
poYBAGICD5-AHBzAAATjcfI003Q270.png
图14 CSM32RV20与GDEW027W3引线连接图
主要软件实现
硬件连接完后,则需开发相应的软件,通过SPI1来驱动墨水屏。墨水屏的驱动软件主要有3部分,第一部分是各引脚接口的定义,用来定义通信接口。第二部分是SPI通信操作的封装,第三部分是墨水屏各个功能的实现。这个墨水屏带有STM32的实例代码,那么下来主要的任务,就是将STM32代码移植适配到CSM32RV20这个MCU的软件上。工程软件代码文件主要有这eink_edp.c , eink_edp_gdew027w3.c, eink27_image.c 三个文件,其中eink_edp.c主要是对SPI操作的封装,也是移植不同MCU时需要修改的代码。eink_edp_gdew027w3.c则是这个屏的操作函数接口,eink27_image.c是由图像抽取工具制作的测试图像数据。如图15所示。
pYYBAGICD6OAQ9t_AAHMKIVok2I257.png
图15 CSM32RV20墨水屏软件工程
在墨水屏对CSM32RV20移植中,对照上面的硬件连接,各引脚IO对应做下面的定义:

//SCK--PA2MISO--PA3 MOSI--PA4CS--PA7 DC--PA8 RST--PA9BUSY--PA10
#define EPD_GPIO_PORT GPIOA
#define EPD_LED_PIN PIN12//RED LED
#define EPD_BUSY_PIN PIN10
#define EPD_RST_PIN PIN9
#define EPD_DC_PIN PIN8
#define EPD_CS_PIN PIN7

#define EPD_SDA_PIN PIN4
#define EPD_DIN_PIN PIN3 //没有用到
#define EPD_CLK_PIN PIN2

#define SET_SPI_CS(EPD_GPIO_PORT->BSR=0x00000001< #define CLR_SPI_CS  (EPD_GPIO_PORT->BSR=0x00010000< #define SET_SPI_CLK  (EPD_GPIO_PORT->BSR=0x00000001< #define CLR_SPI_CLK  (EPD_GPIO_PORT->BSR=0x00010000< #define SET_SPI_MOSI  (EPD_GPIO_PORT->BSR=0x00000001< #define CLR_SPI_MOSI  (EPD_GPIO_PORT->BSR=0x00010000< #define GET_SPI_MISO  (EPD_GPIO_PORT->IDR&(0x00000001< #define GET_BUSY_PIN  (EPD_GPIO_PORT->IDR&(0x00000001<))>))>)
)>)
)>)
)>

主要移植修改的函数主要由下面几个,分别是墨水屏初始化,墨水屏的数据读写操作,以及延时函数。按函数的功能非常简单的适配开发就完成适配层的封装修改。

void DEV_Digital_Write(u8 gpio_pin, u8 s)
{
GPIO_Write(EPD_GPIO_PORT,gpio_pin,s);
}

void DEV_SPI_WriteByte(u8 t)
{
#ifUSE_SOFT_SPI
SPIWriteByte(t);
#else
uint8_t sTxpack[2];
uint8_t sRxpack[2];
sTxpack[0]=t;
SPI_Transceive(spi,sTxpack,sRxpack,1);
#endif
}

void DEV_Delay_ms(u32 ticks)
{
delay_ms(ticks);
}

int EPD_setup(uint8_t w, uint8_t h)
{
Paint_Init(&paint, frame_buffer,w, h);
Paint_Clear(&paint,0x1);
return 0;
}

int DEV_SPI_init()
{
spi = (SPI_TypeDef *)SPI1_BASE;

SPI_Init_case1(spi,0,0,6);
SPI1_CSN_Init_case1();

ee_printf("CS--PA7, CLK--PA2, DI--PA3, DO--PA4n");
ee_printf("BUSY--PA10, RST--PA9, DC--PA8n");

return SUCCESS;
}


这里在随后的调试时,通过反复测试验证,对CSM32RV20芯片驱动层的 SPI_Init_case1 做了一些修改,修改如下:
void SPI_Init_case1(SPI_TypeDef*SPIx, uint8_t cpol, uint8_t cpha, uint8_t fvk);
将原函数里SPI的CPOL与CPHA和主频分频数fvk通过参数方式传入,是为方便调试,通过实际测试验证传入不同的参数来调试相关参数。
在main.c 中则是直接调用封装后的函数,完成SPI对墨水屏操作的测试。测试例子非常简单,相关的函数已以在代码中给出注释,非常简单的十几行代码完成墨水屏的操作测试。
int main(void)
{
///----System Init ----------------------
CLIC_Init();//系统中断配置
System_Clock_Init();//系统时钟初始化
UART_Init_case1(UART1);//串口1初始化 TX1--PA6 RX1--PA5
ee_printf("nCSM32RV20 Eink Display testing ...n");
ee_printf("GPIO_Config completed! ...n");
GPIO_Config();
DEV_SPI_init();
ee_printf("DEV_SPI_init completed! ...n");
ee_printf("Start eink_edp27 testing ...n");
eink_edp27();
while(1)
{
delay_ms(1000);
}
}


编译下载到板子上运行调试。开始几次运行并没有出现正确的输出,例子运行总卡在ReadBusy(void)函数中,这个函数是检测墨水屏的状态的Check Busy,检测是通过读取PIN10的电平,引脚在初始化时配置为输入,并且默认拉低。按技术说明设备初始化如果正确,那么在会在检测ReadBusy时应该输出高电平,输出高电平后才能进行下一步,如果没有输出则代表这步操作没有完成,需要等待并且继续查询该状态直到通过。从初始化到显示的操作流程如图16所示。
pYYBAGICD6eAUxdJAAOIP7okKDo345.png
图16 GDEW027W3操作程序流程图
因为这个屏在STM32的主控芯片下验证通过,其主要的代码也是在STM32上运行正确的,因此这次主要的调试就是检查硬件的连接以及相关参数的修改,确定适配部分的正确。通过经过n次的修改调试,硬件连接检查,最终在串口助手得到了全部正确的输出,输出调试信息如图17所示,这也意味着CSM32RV20驱动SPI串口系列屏验证通过。
poYBAGICD6yADO-6AAIdV3jmNGk783.png
图17 板上运行输出完整的正确信息
墨水屏上也显示出了正确的内容,如图18,图19所示。
pYYBAGICD7CAIAfKAAOGziaq1FA010.png
图18 墨水屏上的显示输出
poYBAGICFj6AQbIrAAW8Tfbs0FQ100.png
图19 墨水屏上的显示放大欣赏
相关性能测试结果
墨水屏应用测试的主要性能测试指标有:正常操作时的整体功耗,待机功耗,以及SPI通讯速度,墨水屏刷新速度。
通过反复运行测试,得到数据如下:
32Mhz主频设置下,3.3V 电压CSM32RV20驱动墨水屏显示最大电流为8.6mA。
待机时,墨水屏可以保持显示,主要待机电流为CSM32RV20待机电流,测试为 20uA左右。
SPI稳定刷写墨水屏,速率在0.5Mbps
墨水屏刷写速度,擦除在2秒左右,写入显示在0.5秒。
应用评测总结
经过对CSM32RV20操作墨水屏显示的应用测试,此款芯片上手比较容易,开发难度不大,在熟悉STM32开发的小伙伴们转到这款芯片时非常容易,开发编译还是非常方便的,编译速度也很快。此款芯片功耗较低能够较好的适用在电池供电等有严苛的电源限制的嵌入式环境下。从正常工作模式到待机模式转换很快,也很稳定。对于SPI速率问题,测试数据表现较低,对比在STM32下有2M以上的表现,分析主要原因可能由于,开发板连接墨水屏用的线较长,有20cm左右,因此干扰增大,造成较高速度通讯时失败率较高,不得不降低通讯速度才能稳定的运行。另外连接线插接不够稳固,也造成信号不够稳定,测试发现墨水屏驱动板电压经常只有1.2v,这是因为连线存在不稳固,线路上有较大电阻。经过反复插接压紧才达到3.3v的电压,因此建议采用布线打测试板的方式来进行验证,这样尽可能排除测试环境造成的影响。
因此此次是测试,直接采用制作好的图片数据,在实际应用中需要实时绘制图片的内容,以及对外通讯,因此需要考虑再加入Si24R1这样的无线通讯芯片,而 CSM32RV20已带有对该通讯芯片的例程,因此加入无线通讯也是比较容易的事了。
最后在此次测试时,恰逢虎年春节,顺手刷一张祝福图送给大家。

poYBAGICK0eAa0MxAAQ69UC_nfA229.png

图20.png


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 南京中科微
    +关注

    关注

    0

    文章

    60

    浏览量

    738
  • CSM32RV20
    +关注

    关注

    0

    文章

    40

    浏览量

    206
收藏 人收藏

    评论

    相关推荐

    追加名额丨米尔瑞芯RK3576开发板有奖试用

    米尔与瑞芯合作发布的新品基于瑞芯RK3576应用处理器的MYD-LR3576开发板免费试用活动加码啦~~米尔追加了2块价值849元的MYD-LR3576
    的头像 发表于 11-22 01:00 39次阅读
    追加名额丨米尔瑞芯<b class='flag-5'>微</b>RK3576<b class='flag-5'>开发板</b>有奖<b class='flag-5'>试用</b>

    【迅为】瑞芯RK3588开发板RK3568开发板区别及优势

    RK3568开发板
    的头像 发表于 11-18 14:19 187次阅读
    【迅为】瑞芯<b class='flag-5'>微</b>RK3588<b class='flag-5'>开发板</b>RK3568<b class='flag-5'>开发板</b>区别及优势

    常用在工业控制系统上的MCU芯片资料:CSM32RV20

    CSM32RV20是一款基于RISC-V核的低功耗MCU芯片。 内置RISC-V RV32IMAC内核(2.6CoreMark/MHz); 蕞高32MHz工作频率; 内置4kB的SRAM; 内置8B
    的头像 发表于 11-15 17:19 126次阅读
    常用在工业控制系统上的MCU芯片资料:<b class='flag-5'>CSM32RV20</b>

    有奖丨米尔 瑞芯RK3576开发板免费试用

    米尔与瑞芯合作发布的新品基于瑞芯RK3576应用处理器的MYD-LR3576开发板免费试用活动来啦~~米尔提供了7块价值849元的MYD-LR3576
    的头像 发表于 11-12 01:00 164次阅读
    有奖丨米尔 瑞芯<b class='flag-5'>微</b>RK3576<b class='flag-5'>开发板</b>免费<b class='flag-5'>试用</b>

    鸿蒙OpenHarmony开发板解析:【芯片解决方案】

    芯片解决方案是指基于某款开发板的完整解决方案,包含驱动、设备侧接口适配、开发板sdk等。
    的头像 发表于 05-10 15:42 1160次阅读
    鸿蒙OpenHarmony<b class='flag-5'>开发板</b>解析:【芯片解决方案】

    201型RV1126开发板开箱视频

    电路开发板
    易百纳
    发布于 :2024年04月12日 11:09:40

    香橙派发布首款RISC-V开发板OrangePi RV

    2024年3月,香橙派在全球开发者会议上发布了其首款基于RISC-V开发的OrangePi RV主板。这款开发板拥有四核RISC-V U74与S7协处理器,配备 2MB L2缓存。同时
    的头像 发表于 04-01 14:47 981次阅读

    fpga开发板是什么?fpga开发板有哪些?

    FPGA开发板是一种基于FPGA(现场可编程门阵列)技术的开发平台,它允许工程师通过编程来定义和配置FPGA芯片上的逻辑电路,以实现各种数字电路和逻辑功能。FPGA开发板通常包括FPGA芯片、时钟模块、电源模块、输入输出接口等组
    的头像 发表于 03-14 18:20 1822次阅读

    fpga开发板使用教程

    FPGA开发板的使用教程主要包括以下几个关键步骤。
    的头像 发表于 03-14 15:50 966次阅读

    fpga开发板与linux开发板区别

    FPGA开发板与Linux开发板是两种不同的硬件开发平台,各自具有不同的特点和应用场景。在以下的文章中,我将详细介绍FPGA开发板和Linux开发板
    的头像 发表于 02-01 17:09 2079次阅读

    rv1126和rk3568对比

    视频编解码。而RK3568开发板创龙科技旗下工业开发板,基于瑞芯RK3568J/RK3568B2处理器设计,四核ARM Cortex-A55,每核主频高达1.8GHz/2.0GHz。 rv
    的头像 发表于 01-23 18:05 1w次阅读
    <b class='flag-5'>rv</b>1126和rk3568对比

    大联大推出基于中科蓝讯产品的蓝牙音箱开发板方案

    2024年1月9日,致力于亚太地区市场的领先半导体元器件分销商---大联大控股宣布其旗下世平推出基于中科蓝讯(Bluetrum)AB5301A的蓝牙音箱开发板方案。
    的头像 发表于 01-12 10:44 961次阅读
    大联大推出基于<b class='flag-5'>中科</b>蓝讯产品的蓝牙音箱<b class='flag-5'>开发板</b>方案

    【新品体验】国产FPGA+OMAPL138开发板免费试用

    开发板基于德州仪器的OMAP-L138(定点/浮点DSP C674x+ARM9)与国产中科亿海FPGA EO6HL45LL的《DSP+ARM+FPGA三核评估套件》,通过EMIF、SPI
    发表于 12-07 10:26

    基于瑞芯 RV1103 芯片,微型 Linux 开发板LuckFox Pico Plus开发实践

    、UART、SPI、I2C、USB 等,便于快速开发和调试 1.开发板初体验 LuckFox Pico Plus是一款基于瑞芯RV110
    发表于 11-30 14:10

    方法|如何为开发板调试新的触摸

    方法|如何为开发板调试新的触摸
    的头像 发表于 11-30 11:30 865次阅读
    方法|如何为<b class='flag-5'>开发板</b>调试新的触摸<b class='flag-5'>屏</b>