哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于CKS32F103VE MCU的前級效果器面板方案

中科芯MCU ? 來源:中科芯MCU ? 2025-09-04 10:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

MCU應用方案

第六十一期 2025.09.01

項目方案概述

本應用來源于前級效果器面板項目(圖1),由一方案商提供硬件,但沒有原版軟件程序,因此他們自己開發(fā)了一套替代方案,依然是使用雅特力415芯片,此芯片主頻150MHz,SPI傳輸速率最高可達50Mb/s,經(jīng)計算,如果使用SPI+DMA傳輸,理論上可以跑40幀左右且不占用太大的系統(tǒng)使用率,但可能受限于技術水平,方案商的替代方案效果并不理想。

而如果我們想要出替代方案,使用M4系列,其價格并不是很好的選擇,因此選用了M3大容量的CKS32F103VET6。LCD驅動方面,受限于M3最高18Mb/s的SPI傳輸速率,我們選用了8080作為顯示驅動接口,利用了MCU的FSMC功能,對比SPI一根線傳輸數(shù)據(jù),F(xiàn)SMC可同時傳輸8位/16位數(shù)據(jù),其速率實測連續(xù)單色刷屏可達百幀以上,本項目方案商提供了8位并口屏,如果選擇16位速度可提升一倍。

系統(tǒng)菜單方面,原方案使用的是多級菜單,沒有掛系統(tǒng),多級菜單優(yōu)劣勢明顯,優(yōu)勢是設計簡單,把系統(tǒng)分成一個個的層級,通過按鍵輪詢菜單就可以切換不同的界面,其缺點是可靠性不足,不足以承載復雜的系統(tǒng),基于項目復雜性及可靠性評估,選擇了移植LVGL作為本方案的開發(fā)系統(tǒng),兼顧了系統(tǒng)穩(wěn)定性、項目拓展性及成功率。

ccfa79c2-870f-11f0-a18e-92fbcf53809c.png

圖1 前級效果器面板開發(fā)樣機

方案主要設計核心思路

客戶的核心訴求主要是刷屏效果要達到原版效果,原版效果應該在20幀以內,速度比較快但刷屏時依然可以看到刷屏線,另一個要求是功能跟原版功能一致。

刷屏效果優(yōu)化

刷屏效果主要通過四種方式來優(yōu)化:

(1)提高主頻:我們103大容量運行頻率可達144MHz,因此在軟件的最開始,手動配置了升頻函數(shù),主要語句如下,配置PLL倍頻12倍,即12M*12=144MHz,后使能PLL,另外Flash等待時間必須配置為5,因為主頻增加了,要保證有足夠的等待時間才能完成配置,實測等待時間2時,最高只能跑到120MHz主頻。

FLASH_SetLatency(0x05);

RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_12);

RCC_PLLCmd(ENABLE);

(2)優(yōu)化FSMC驅動:FSMC硬件連接方式如下表1所示,使用NE1作為片選,A16為寫命令/寫數(shù)據(jù),D0-D7為8位的雙向數(shù)據(jù)線,PD4讀數(shù)據(jù),PD5寫數(shù)據(jù)。LCD的驅動時序,和FSMC模式A的時序基本一致,因此配置成模式A即可。為了最大化提高傳輸速率,F(xiàn)SMC的建立時間和數(shù)據(jù)保持時間都配置到最小。

表1 MCU與LCD屏接口硬件連接

cd3f0c4a-870f-11f0-a18e-92fbcf53809c.png

(3)打點函數(shù)優(yōu)化:MCU通過以上FSMC并口控制LCD顯示芯片,其邏輯是MCU通過特定的地址把數(shù)據(jù)傳到LCD驅動顯示芯片相應的顯存里面(需要此芯片的根本原因是MCU SRAM不足),驅動顯示芯片再按照配置好的掃屏順序,在顯示屏上刷新一個個像素點(圖2)。

cd52acfa-870f-11f0-a18e-92fbcf53809c.png

圖2 MCU與LCD屏的關系

而打點函數(shù)就是MCU用來傳輸數(shù)據(jù)到LCD驅動顯示芯片的橋梁,一般傳輸一個像素點數(shù)據(jù),都需要先發(fā)送命令,再發(fā)送數(shù)據(jù),LCD驅動顯示芯片才會知道你這個數(shù)據(jù)用來干什么,一般的打點函數(shù),會對每一個像素點都進行寫命令再發(fā)送數(shù)據(jù),這樣每次都會浪費2次8位數(shù)據(jù)的時間,整一個屏320*240個像素點,就會浪費大量的時間,因此優(yōu)化了打點函數(shù),如下文所示。每次先獲得需要顯示圖像的XY軸開窗大小,然后寫命令一次,就可以將所有像素點連續(xù)寫入,只需要一次循環(huán)結束就可以完成打點函數(shù)。

void LCD_Draw_Picture(u16 sx,u16 sy,u16 ex,u16 ey,u16 *color)

{

u16 height,width;

u16 i;

width=ex-sx+1; //得到圖片的寬度

height=ey-sy+1; //得到圖片的高度

Lcd_SetRegion(sx,sy,ex,ey);

LCD_WriteRAM_Prepare(); //開始寫入GRAM

for(i=0;i

{

LCD->LCD_RAM=(*color)>>8;//寫入顏色值

LCD->LCD_RAM=(*color)&0XFF;

color++;

}

}

另外因為有LCD驅動顯示芯片的中轉存在,這里會產生一個問題,當LCD還沒有刷新完屏幕一幀畫面時(讀顯存),LCD驅動顯示芯片就寫入下一幀的畫面,那這兩幀之間,就會產生斷紋,對應到人眼視覺上面,就會產生一個橫向撕裂的短暫停留(圖3)。 本方案解決這個問題的方式是通過讀取驅動芯片的更新掃描線,讀取到掃描線在屏幕以外,才開始寫入,當然弊端是這個讀取時間導致幀數(shù)降低,所以本方案在刷整屏的時候才會去等待掃描線,啟用消除橫向撕裂功能,小面積刷屏的時候幾乎不會出現(xiàn)撕裂現(xiàn)象,這樣的方案可以有效提高幀數(shù)。

cd667a0a-870f-11f0-a18e-92fbcf53809c.png

圖3 橫向撕裂產生的原因,讀和寫的不同步

(4)LVGL系統(tǒng)級優(yōu)化:LVGL作為一個輕量級GUI系統(tǒng),并不是想要顯示圖像,就能馬上發(fā)送打點函數(shù),LVGL會有一個自己的心跳,根據(jù)顯示區(qū)域的大小及緩存區(qū)域配置,緩存好一塊圖像再通過打點函數(shù)輸出,這個緩存區(qū)域會極大的影響幀率,一般默認是每次緩存像素點的十分之一,就會存在10次緩存等待時間,因此選擇優(yōu)化這個次數(shù),但是增大緩存區(qū)域會極大的占用SRAM,目前優(yōu)化配置為緩存總像素點的四分之一,占用38K字節(jié)SRAM,幀數(shù)可達20幀左右。

當然,并不是只有這一種緩存方式,還可以選用雙緩存或者DMA2D+LTDC加速,但前者需要大量的SRAM資源,相當于開辟雙倍的緩存區(qū)域,一個負責渲染,一個負責繪制;后者LTDC則需要F429以上芯片才有。很明顯我們不具有LTDC外設,并且實測同等SRAM占用下,雙緩存不如單緩存顯示效果好。

方案進行到這一步的時候才發(fā)現(xiàn)LVGL的弊端,并不能完全發(fā)揮我們FSMC傳輸速率,但好處是正因為輕量級系統(tǒng)的存在,令我們系統(tǒng)可靠性大大提升,不需要自行設計內存管理,配置后系統(tǒng)會幫你管理。

核心功能開發(fā)

經(jīng)過刷屏效果優(yōu)化后,已經(jīng)能滿足項目需求,接下來進行功能項開發(fā)。雖然本項目看起來不大,但涉及的內容非常多,共分為7大項:

1) 輸入按鍵及旋鈕開發(fā)

本項目所有輸入分兩種,第一種是ADC檢測的按鍵,由一個ADC外設,來檢測由分壓電阻隔開的11個電平,共分11個按鍵,不同adc值得到特定按鈕,本功能難點是adc檢測濾波函數(shù)和無沖突按鍵邏輯,濾波函數(shù)如下文所示,由于要準確的命中鍵值,這里每次觸發(fā)adc中斷,會從DMA讀取100個adc值,然后快速作一個排序,最后平均第49位和50位adc值,就可以得到可靠的按鍵值,這些設定在16ms內處理一次。能準確得到按鍵值后,因為處理時間很快,為了使重復按鍵不沖突,設定了第一次按鍵鎖定以及鎖定時間,按下第一個按鍵后一定時間內失能其他按鍵。

void filter(void)

{

u16 tmp;

u8 i = 0,j = 0;

for(i=0; i<=100/2; i++){

for(j=0; j< 99-i; j++){

if(ADC_ConvertedValue[j+1] < ADC_ConvertedValue[j]){

tmp = ADC_ConvertedValue[j+1];

ADC_ConvertedValue[j+1] = ADC_ConvertedValue[j];

ADC_ConvertedValue[j] = tmp;

}

}

}

After_filter=(ADC_ConvertedValue[49] + ADC_ConvertedValue[50])/2;

}

第二種輸入是三組旋鈕編碼器,旋鈕編碼器比較特殊,正轉和反轉時,都會觸發(fā)AB兩個相的電平(圖4),通過分辨電平觸發(fā)的先后順序來得到正反轉。軟件部分使用2個IO外部中斷線觸發(fā),通過排序AB電平來臨的順序判斷是正反轉,需要觸發(fā)多次判斷,同時要兼顧軟件防抖。三組編碼器共用到6個IO外部線中斷。

cd910586-870f-11f0-a18e-92fbcf53809c.png

圖4 編碼器正反轉波形及狀態(tài)圖

2)頁面開發(fā)及頁面切換

為了快速開發(fā)頁面,本項目用到了NXP的一個軟件GUI-guider,頁面如圖5所示,是一款以圖像設計轉換為LVGL代碼的軟件,通過配置模型和觸發(fā)事件,能快速的幫你轉化成代碼。有眾多使用方式,如新建文本框并給這個文本框觸發(fā)事件、按鍵按下后觸發(fā)文本框參數(shù)修改、聚焦時背景高亮、離焦后背景變回原色或切換下一頁。

使用軟件后,文本框功能只需要放置一個文本框圖像,設定大小和文本內容,右鍵添加相關事件,最后會自動生成所有代碼,大大減少開發(fā)難度,但最新版仍有一些bug,要自行按經(jīng)驗修改,如內存泄露,跳轉后沒有及時清理新建過的模型,導致內存一直累積,多次跳轉后爆內存。本項目使用此軟件快速生成頁面和事件的模版,再按需求修改邏輯和bug,本項目高達20多個頁面,200多個觸發(fā)事件,使用此軟件后工作量依然巨大。

cda5b59e-870f-11f0-a18e-92fbcf53809c.png

圖5 NXP的GUI-guider頁面

3)參數(shù)切換開發(fā)

本項目參數(shù)切換頁面如圖6所示,這是其中一頁的可調參數(shù),通過旋鈕來選擇參數(shù)項,如選到輸入選擇,按下確認按鍵后,進入?yún)?shù)切換模式,再次轉動旋鈕將模擬1切換為模擬2、藍牙、USB等字樣。

軟件層面來看,我們找到這個文本框事件,添加按下事件,觸發(fā)這個事件會進入到修改參數(shù)的狀態(tài),不同參數(shù)切換有不同標志位,整個項目參數(shù)切換標志位多達200個,并且由于要修改參數(shù)的形式都不大一樣,每種參數(shù)都需要一種函數(shù)處理,工作量很大,并且除了參數(shù)本身定義值以外,還要顯示成字符串顯示在屏幕上,占用的FLASH和SRAM也需要非常大,目前沒有太好的方式,功能2和功能3都要花費大量的重復工作。

cdb7b7b2-870f-11f0-a18e-92fbcf53809c.png

圖6 MCU與LCD屏的關系

4)面板鎖開發(fā)

面板功能要求帶有面板鎖,基本邏輯是開啟面板鎖后,一段時間自動回到主頁并顯示上鎖符號,上鎖后不能操作按鍵,僅能用旋鈕調節(jié)音樂話筒效果等音量,按鍵后會進入解鎖頁面,輸入正確密碼后,回到主頁并解除上鎖符號,但一段時間不操作依舊會回到上鎖頁面,除非關閉面板鎖。

軟件設計了2種狀態(tài),一種是開啟面板鎖功能標志位,一種是完全上鎖標志位,開啟面板鎖并不會馬上進入第二種狀態(tài),不管當前是什么頁面,只要一段時間不操作,就會跳轉主頁并完全上鎖,完全上鎖后只要按鍵,就會跳轉解鎖頁面,密碼匹配后方可退出完全上鎖狀態(tài),然后開始倒數(shù)計數(shù),每次按鍵都會復位計數(shù)值,倒數(shù)完畢后重回上鎖狀態(tài),邏輯流程圖如圖7所示。

cdd1bb8a-870f-11f0-a18e-92fbcf53809c.png

圖7 面板鎖軟件邏輯流程圖

5)保存命名/密碼輸入

本功能主要是對命名設計,模式保存后可以添加命名(圖8a),一共可以保存16種配置,配置好后,使用效果器的人員,只需要調用相應序號及名字的模式,所有參數(shù)會自動切換到上次保存的配置。這個功能和參數(shù)切換類似,把每一位的名稱都當成是獨立的一個參數(shù),由A-Z,a-z,0-9還有空格一共63個數(shù)組成的數(shù)組里面選擇,總共10位組成一段命名,同時調整序號,會馬上顯示相應保存好的命名。面板鎖密碼頁面(圖8b)也是類似,只不過是從0-9,10個數(shù)字變化,另外增加原密碼的對比,以及密碼修改功能。這部分的難點在于要考慮全面,當保存命名/輸入密碼中途,插入其他操作,應該復位和保存相應的參數(shù)。

cde477ac-870f-11f0-a18e-92fbcf53809c.png

cdf435e8-870f-11f0-a18e-92fbcf53809c.png

圖8 a保存命名及b面板鎖密碼

6)配置保存讀取/數(shù)據(jù)庫修改開發(fā)

在項目的初期,原方案商并沒有加入進來,沒有獲取到對方的數(shù)據(jù)庫設定,因此設計將所有16組配置參數(shù)寫入內部Flash,以及讀取的一套驗證方式,把寫入內部Flash當成是發(fā)送到對方數(shù)據(jù)庫內,用于所有參數(shù)的保存和讀取,根據(jù)寫入?yún)?shù)的大小,按順序每8位寫入到一位內存數(shù)組里,再從特定地址,順序讀回參數(shù)。

為了減少Flash占用空間,參數(shù)都使用數(shù)字簡化代表字符串,再根據(jù)不同數(shù)字轉換回字符串用于顯示。雖然后期加入對方的數(shù)據(jù)庫,存儲數(shù)據(jù)在DSP內部,但這種方式也有效的設計了字符串轉換的函數(shù),減少了開發(fā)周期。

7) 事務優(yōu)化

LVGL的特色是按照心跳自行輸出畫面,而眾多的事務總會對畫面做干預,但LVGL本身是不支持多線程操作的,在系統(tǒng)還沒有輸出完畫面時,我們直接去干預,會造成系統(tǒng)卡死,因此可以利用LVGL的軟件定時器,將所有事務都運行在里面,讓LVGL自行順序執(zhí)行。

而MCU自身的ADC中斷和外部IO檢測中斷,因為不能放在軟件定時器內執(zhí)行,我們盡可能的減少數(shù)據(jù)量處理,僅用于標志位觸發(fā)判定,從而保證系統(tǒng)可靠。如果開發(fā)更大的系統(tǒng),可以加入任務系統(tǒng),來輔助線程操作。

軟件定時器新建方式如下:

lvgl_task2 = lv_timer_create(OS_Handler, 10, 0);

//創(chuàng)建軟件定時器,后續(xù)直接調用void OS_Handler(lv_timer_t * tmr)

結語

以上是本項目核心的開發(fā)思路,詳細開發(fā)過程中還會碰到很多問題,如字模替換、特殊顯示邏輯、圖片插入等。軟件工程送樣后添加了通訊協(xié)議和相關函數(shù),上機連接DSP實測通訊控制沒有問題。

整個方案,總的來說CKS32F103VE的FLASH和SRAM資源堪堪夠用,可以看到LVGL雖然穩(wěn)定可靠且使用方便,但在只用到文本框和標簽模型的情況下,每頁畫面占用的資源在十多K字節(jié)左右,顯示幀率也因為緩沖方式受限很大。FSMC優(yōu)化后,能跑20幀左右,占用SRAM有38K字節(jié),如果重新評估,同樣顯示功能, SPI+DMA+多級菜單的方案也是足夠使用,當然現(xiàn)在圖形化一直在發(fā)展,更加美觀的GUI可拓展性更佳。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    147

    文章

    19094

    瀏覽量

    402733
  • lcd
    lcd
    +關注

    關注

    36

    文章

    4630

    瀏覽量

    177855
  • 面板
    +關注

    關注

    13

    文章

    1728

    瀏覽量

    55450

原文標題:CKS32F103VE應用于前級效果器面板方案

文章出處:【微信號:中科芯MCU,微信公眾號:中科芯MCU】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    各位大佬給指點一下,感激不盡,貝斯DI效果器上的插件元件

    我是新人 各位見笑了 各位大佬給看看這是什么原件這個一個貝斯DI效果器上的一個插試原件兩排插針上面也沒有絲印型號不知道如何測量與購買請各位指點
    發(fā)表于 09-04 20:14

    ktv kalaok 效果器

    給大家分享一個剛坐到的項目卡拉ok效果器 家用效果器歡迎有共同興趣的朋友交流!可以私底下交流398309111
    發(fā)表于 09-23 15:16

    效果器的使用技巧

    效果器是提供各種聲場效果的音響周邊器材。原先主要用于錄音棚和電影伴音效果的制作,現(xiàn)在已廣泛應用現(xiàn)場擴聲系統(tǒng)。無論效果器的品質如何優(yōu)秀,如果不能掌握其調整技巧,
    發(fā)表于 08-28 15:40 ?48次下載

    效果器,效果器的種類,效果器的原理是什么?

    效果器,效果器的種類,效果器的原理是什么? 失真(Distortion)   俗稱沙聲。是一種將電吉他聲音故意
    發(fā)表于 03-31 16:40 ?7545次閱讀

    stm32f103ve數(shù)據(jù)資料

    官網(wǎng)下載的stm32f103ve數(shù)據(jù)資料,絕逼可靠,英文的
    發(fā)表于 06-22 16:12 ?9次下載

    一文看懂激勵效果器的作用

    本文首先介紹了激勵的原理與作用,其次介紹了常用踏板式效果器作用與特點,最后介紹了效果器的用途及音響效果器的使用方法。
    的頭像 發(fā)表于 05-24 11:40 ?6.6w次閱讀

    中科芯CKS32F103RBT6在智能家居系統(tǒng)中的應用

    中科芯CKS32F103RBT6在智能家居系統(tǒng)中的應用
    的頭像 發(fā)表于 10-30 18:23 ?1494次閱讀
    中科芯<b class='flag-5'>CKS32F103</b>RBT6在智能家居系統(tǒng)中的應用

    基于CKS32F103RCT6開發(fā)的智能控制

    基于CKS32F103RCT6開發(fā)的智能控制
    的頭像 發(fā)表于 10-26 17:30 ?1554次閱讀
    基于<b class='flag-5'>CKS32F103</b>RCT6開發(fā)的智能控制<b class='flag-5'>器</b>

    效果器可以代替功放嗎

    效果器功放是音頻信號處理中的兩個不同概念和功能。效果器主要用于改變音頻信號的聲音特色,如混響、均衡、失真等,而
    的頭像 發(fā)表于 02-23 11:19 ?9871次閱讀

    功放和效果器的區(qū)別是什么

    在音頻信號處理領域,功放和效果器是兩個至關重要的組件,它們各自承擔著不同的角色和功能。 一、定義與概述 1. 功放 定義 :
    的頭像 發(fā)表于 07-29 09:41 ?1.1w次閱讀

    效果器功放有什么區(qū)別

    效果器功放是音頻系統(tǒng)中的兩個重要組成部分,它們在音頻信號處理和放大方面發(fā)揮著關鍵作用。然而,它們之間存在一些關鍵差異,這些差異會影
    的頭像 發(fā)表于 07-29 09:43 ?7189次閱讀

    效果器和后功放怎么連接

    在音響系統(tǒng)中,效果器和后功放是兩個非常重要的組成部分。
    的頭像 發(fā)表于 07-29 09:44 ?1.5w次閱讀

    效果器對所有的專業(yè)功放都通用嗎

    效果器(Effects Processor)是一種音頻處理設備,用于對音頻信號進行各種處理,以達到改變聲音特性、增加聲音效果或改善音質的目的。在音頻領域,效果器廣泛應用于音樂制作、現(xiàn)場演出、廣播
    的頭像 發(fā)表于 07-29 09:53 ?3323次閱讀

    探索吉他音色與效果器的奇妙世界(3)- 時延和哇音效果器

    本文是第二屆電力電子科普征文大賽的獲獎作品,來自上??萍即髮W李晨曦的投稿。時延類效果器如果失真類效果器是拿信號的幅值開刀,那么時延類效果器則是在信號的時域特性上做文章。根據(jù)原理的不同,可以將時延類
    的頭像 發(fā)表于 06-14 10:00 ?1751次閱讀
    探索吉他音色與<b class='flag-5'>效果器</b>的奇妙世界(3)- 時延和哇音<b class='flag-5'>效果器</b>

    中科芯CKS32系列芯片在便攜式儲能系統(tǒng)的技術解析

    便攜式儲能系統(tǒng)的控制單元決定能源管理效率、安全冗余與場景適配能力。中科芯CKS32F103RC、CKS32F103VE、CKS32F407VG三款MCU,基于ARMCortex架構差異
    的頭像 發(fā)表于 09-13 11:01 ?2090次閱讀
    阆中市| 龙州县| 从江县| 苍溪县| 宜章县| 巨鹿县| 岳池县| 繁昌县| 高雄市| 湘阴县| 承德市| 大埔县| 北京市| 浠水县| 关岭| 长葛市| 台湾省| 湖口县| 贵定县| 法库县| 钟祥市| 福泉市| 连山| 宝应县| 成都市| 新源县| 瓦房店市| 凭祥市| 宝坻区| 常德市| 岑巩县| 湟源县| 文水县| 常州市| 南城县| 舞阳县| 翁源县| 大渡口区| 板桥市| 宜兰市| 邯郸县|