国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

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

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

掃碼添加小助手

加入工程師交流群

MCU應用方案

第六十一期 2025.09.01

項目方案概述

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

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

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

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

圖1 前級效果器面板開發樣機

方案主要設計核心思路

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

刷屏效果優化

刷屏效果主要通過四種方式來優化:

(1)提高主頻:我們103大容量運行頻率可達144MHz,因此在軟件的最開始,手動配置了升頻函數,主要語句如下,配置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)優化FSMC驅動:FSMC硬件連接方式如下表1所示,使用NE1作為片選,A16為寫命令/寫數據,D0-D7為8位的雙向數據線,PD4讀數據,PD5寫數據。LCD的驅動時序,和FSMC模式A的時序基本一致,因此配置成模式A即可。為了最大化提高傳輸速率,FSMC的建立時間和數據保持時間都配置到最小。

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

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

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

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

圖2 MCU與LCD屏的關系

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

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)。 本方案解決這個問題的方式是通過讀取驅動芯片的更新掃描線,讀取到掃描線在屏幕以外,才開始寫入,當然弊端是這個讀取時間導致幀數降低,所以本方案在刷整屏的時候才會去等待掃描線,啟用消除橫向撕裂功能,小面積刷屏的時候幾乎不會出現撕裂現象,這樣的方案可以有效提高幀數。

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

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

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

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

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

核心功能開發

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

1) 輸入按鍵及旋鈕開發

本項目所有輸入分兩種,第一種是ADC檢測的按鍵,由一個ADC外設,來檢測由分壓電阻隔開的11個電平,共分11個按鍵,不同adc值得到特定按鈕,本功能難點是adc檢測濾波函數和無沖突按鍵邏輯,濾波函數如下文所示,由于要準確的命中鍵值,這里每次觸發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;

}

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

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

圖4 編碼器正反轉波形及狀態圖

2)頁面開發及頁面切換

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

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

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

圖5 NXP的GUI-guider頁面

3)參數切換開發

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

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

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

圖6 MCU與LCD屏的關系

4)面板鎖開發

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

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

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

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

5)保存命名/密碼輸入

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

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

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

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

6)配置保存讀取/數據庫修改開發

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

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

7) 事務優化

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

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

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

lvgl_task2 = lv_timer_create(OS_Handler, 10, 0);

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

結語

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

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

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

    關注

    147

    文章

    18669

    瀏覽量

    388933
  • lcd
    lcd
    +關注

    關注

    36

    文章

    4581

    瀏覽量

    176044
  • 面板
    +關注

    關注

    13

    文章

    1722

    瀏覽量

    55229

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

    ktv kalaok 效果器

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

    cks32f103有哪些功能

    cks32f103是國產芯片,由中科芯研發,比起ST公司F103多了一個剎車功能它有keil的器件安裝包,支持keil的開發。器件安裝包鏈接:鏈接: 百度網盤鏈接提取碼:0xyu下載方式是:SWD
    發表于 07-23 07:14

    效果器的使用技巧

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

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

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

    stm32f103ve數據資料

    官網下載的stm32f103ve數據資料,絕逼可靠,英文的
    發表于 06-22 16:12 ?9次下載

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

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

    中科芯CKS32F103RBT6在智能家居系統中的應用

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

    基于CKS32F103RCT6開發的智能控制

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

    效果器可以代替功放嗎

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

    功放和效果器的區別是什么

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

    效果器功放有什么區別

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

    效果器和后功放怎么連接

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

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

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

    中科芯CKS32系列芯片在便攜式儲能系統的技術解析

    便攜式儲能系統的控制單元決定能源管理效率、安全冗余與場景適配能力。中科芯CKS32F103RC、CKS32F103VECKS32F407VG三款MCU,基于ARMCortex架構差異
    的頭像 發表于 09-13 11:01 ?1662次閱讀