本文來源電子發燒友社區,作者:ALSET, 帖子地址:https://bbs.elecfans.com/jishu_2248799_1_1.html
芯片概述
應用測試描述
主要軟件實現
相關性能測試結果
應用評測總結
芯片概述
CSM32RV20 是一顆基于RISC-V 指令的32位國產低功耗芯片,芯片內置了一個4k字節的SRAM。它可以以字節、半字(16位)或全字(32位)方式訪問,支持4種低功耗模式,最低功耗小于1uA。可以按低電源消耗、啟動時間和可用的喚醒源的組合方式,來選取一個最佳的方案來選定一個低功耗模式,實現不同場景下的低功耗應用。非常適合物聯網環境下的針對各種場景的應用的MCU計算處理的需求,給嵌入式開發帶來更加靈活的選擇,能夠實現更多特色功能的電子設計。
芯片主要特性
圖1. 芯片架構圖
● 最高 32MHz 工作頻率;
● 內置 4kB 的 SRAM;
● 內置 8B 的 ALWAYS 寄存器,能在掉電模式 2 下保存數據;
● 內置 4~40kB 的嵌入式 FLASH,512B 的 NVM;
● 內置 2 個 SPI MASTER;
● 內置 1 個 I2C MASTER;
● 內置 4 個 UART 支持最高 1Mbps;
● 寬 ADC 輸入電壓范圍:0 ~ VDD(VDD ≤ 4.8V);
● ADC 支持 11 個輸入通道,最多支持 9 個觸摸按鍵;
● 內置 3 個快速比較器;
● 內置低壓檢測模塊;
● 最多支持 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資源更豐富,同時封裝體積更小,適合小體積要求產品的開發。
圖2CSM32RV20芯片引腳圖
芯片功能描述
這里QFN32的芯片為測試對象,該芯片所有外設功能被引出。該芯片引腳功能描述如圖3所示。
圖3CSM32RV20芯片引腳功能描述
最小開發板
原廠提供了最小開飯,開發板將芯片的所有引腳已2.54mm排針引出。外接一顆CH34N USB轉串口芯片,通過Type-C 接口與PC連接。同時板子上有3.3v/5.1v開關的選擇,通過撥動開關可以選擇不同的工作電壓,可見此MCU可以在這兩種電壓下工作。開發板采用串口方式下載,J-Link調試器進行調試,板上右側4根排針即為接J-Link的接口,需要注意的是J-Link需要支持v11版本以上的。
圖4CSM32RV20開發板
開發環境配置
開發板開發主要開發語言為c/c++, 開發工具為CSMStudio,CSMStudio是集成開發環境,集成代碼編輯,編譯,連接,調試仿真為一體。在Win10上安裝完CSMStudio后,打開開發工具如圖5所示。
圖5 CSMStudio IDE 集成開發工具
安裝好CSMStudio后,直接通過菜單“文件”創建一個新工程,創建時選擇CSM32RV20芯片,即可創建新工程,然后編譯,在工程 default 目錄下成功生成 elf 目標文件,如圖6所示。
圖6 CSMStudio IDE 創建測試工程
編譯得到elf文件后,通過CSM提供的下載工具 CSMISP 進行下載。安裝好CH34N窗口驅動和CSMISP軟件。安裝完CSMISP啟動后如圖7所示。
圖7 CSMISP PC下載調試工具
安裝完CSM_ISP后,設置好MCU型號,串口號和通訊速度即可連接到開發板。可以通過檢測MCU型號來檢測與開發板是否連接正常,點擊檢測MCU型號并且按開發板復位鍵,后會在下載信息窗口出現如圖8所示,表示已和開發板連接成功。
圖8 CSMISP 檢測MCU型號成功
在確認下載工具與開發板連接正常后,再點程序文件,選擇編譯好的elf文件后,在調試信息里會顯示程序文件加載成功。
圖9 程序文件加載成功
再點下載/編程按鈕,且按開發板復位鍵,在調試信息里會程序下載和flash刷寫過程,如一切順利,則顯示程序下載成功。如果顯示失敗,可以重復下載動作幾次,也能獲得下載成功。下載過程如圖10所示。
圖10 下載編程到板子上成功
下載目標程序到板子上后,按按開發板復位鍵,程序就會被運行,默認創建的測試工程是一個點亮 LED的代碼,程序在串口助手打印出信息,開發板上可以見到LED閃爍,如圖11所示。到此整個開發、編譯、下載和串口調試過建立程完成。
圖11 按reset鍵程序在板子上運行成功
此次測試目標,我們根據次芯片低功耗的特點,搭配電子墨水顯示屏,使用紐扣電池或鋰電充電電池的應用場景作為應用測試目標。電子墨水屏具有掉電保持顯示內容,驅動功耗低等優點,方案可用于物聯網現場數據采集顯示、電子價簽、智能工牌等應用。此次配合測試使用的是GDEW027W3一款2.7寸黑白兩色的電紙屏, 屏幕分辨率為264x176,像素點為0.2毫米,屏幕顯示對比度高,刷新速度快,溫度適應范圍寬,體積也很小巧。
測試硬件連接
該墨水屏采用SPI4線串口方式通訊,根據其使用說明,它與CSM32RV20 開發板連接電路如圖12所示。
圖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所示。
圖13 CSM32RV20與GDEW027W3墨水屏連接圖
圖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所示。
圖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--PA5ee_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所示。
圖16 GDEW027W3操作程序流程圖
因為這個屏在STM32的主控芯片下驗證通過,其主要的代碼也是在STM32上運行正確的,因此這次主要的調試就是檢查硬件的連接以及相關參數的修改,確定適配部分的正確。通過經過n次的修改調試,硬件連接檢查,最終在串口助手得到了全部正確的輸出,輸出調試信息如圖17所示,這也意味著CSM32RV20驅動SPI串口系列屏驗證通過。
圖17 板上運行輸出完整的正確信息
墨水屏上也顯示出了正確的內容,如圖18,圖19所示。
圖18 墨水屏上的顯示輸出
圖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已帶有對該通訊芯片的例程,因此加入無線通訊也是比較容易的事了。
最后在此次測試時,恰逢虎年春節,順手刷一張祝福圖送給大家。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
南京中科微
+關注
關注
0文章
60瀏覽量
740 -
CSM32RV20
+關注
關注
0文章
40瀏覽量
206
發布評論請先 登錄
相關推薦
追加名額丨米爾瑞芯微RK3576開發板有獎試用
米爾與瑞芯微合作發布的新品基于瑞芯微RK3576應用處理器的MYD-LR3576開發板免費試用活動加碼啦~~米爾追加了2塊價值849元的MYD-LR3576
常用在工業控制系統上的MCU芯片資料:CSM32RV20
CSM32RV20是一款基于RISC-V核的低功耗MCU芯片。 內置RISC-V RV32IMAC內核(2.6CoreMark/MHz); 蕞高32MHz工作頻率; 內置4kB的SRAM; 內置8B
有獎丨米爾 瑞芯微RK3576開發板免費試用
米爾與瑞芯微合作發布的新品基于瑞芯微RK3576應用處理器的MYD-LR3576開發板免費試用活動來啦~~米爾提供了7塊價值849元的MYD-LR3576
香橙派發布首款RISC-V開發板OrangePi RV
2024年3月,香橙派在全球開發者會議上發布了其首款基于RISC-V開發的OrangePi RV主板。這款開發板擁有四核RISC-V U74與S7協處理器,配備 2MB L2緩存。同時
fpga開發板是什么?fpga開發板有哪些?
FPGA開發板是一種基于FPGA(現場可編程門陣列)技術的開發平臺,它允許工程師通過編程來定義和配置FPGA芯片上的邏輯電路,以實現各種數字電路和邏輯功能。FPGA開發板通常包括FPGA芯片、時鐘模塊、電源模塊、輸入輸出接口等組
fpga開發板與linux開發板區別
FPGA開發板與Linux開發板是兩種不同的硬件開發平臺,各自具有不同的特點和應用場景。在以下的文章中,我將詳細介紹FPGA開發板和Linux開發板
rv1126和rk3568對比
視頻編解碼。而RK3568開發板創龍科技旗下工業開發板,基于瑞芯微RK3568J/RK3568B2處理器設計,四核ARM Cortex-A55,每核主頻高達1.8GHz/2.0GHz。 rv
大聯大推出基于中科藍訊產品的藍牙音箱開發板方案
2024年1月9日,致力于亞太地區市場的領先半導體元器件分銷商---大聯大控股宣布其旗下世平推出基于中科藍訊(Bluetrum)AB5301A的藍牙音箱開發板方案。
【新品體驗】國產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
評論