正值端午佳節,來自EEWORLD測評活動中的先楫體驗官帶著他的端午禮物-測評文章前來報到!今天讓網友RCSN帶我們用HPM6750玩轉串口屏。
此貼是為了后續的lvgl移植做的SPI顯示屏驅動接口,由于沒有RGB屏幕,只能使用SPI接口的顯示屏作為UI顯示。查看了官方的SDK代碼的SPI例子,發現并沒有SPI DMA的例子,只有poll例子。
查看了下手冊,HPM6750的所有SPI接口均可達到最大80M頻率,由400M頻率的PLL1CLK1時鐘源,最大分頻為5分頻得到。
根據擴展接口定義,本貼使用的是SPI2,加之SPI例子中也是使用SPI2,所以工程中就以SPI2作為顯示屏接口。
官方的SPI例子移植為SPI顯示屏顯示需要注意幾個點:
一、時鐘源和分頻改變
官方使用的SPI時鐘源是CLK_24M,也就是SPI最高只能24M頻率,這對于能快速刷屏而言,24M頻率是肯定不夠的,結合上述的時鐘分配,可以找到以下的SPI時鐘初始化接口board_init_spi_clock,根據以下解釋便可得到SPI的頻率,最大分頻為5,也就是80M,這里的SPI顯示屏經測試可以達到80多M,很明顯樓主使用5分頻即可。
當為默認的24M頻率時候,顯示屏分辨率為240*280,圖片放于xip flash區域,幀率大概為22fps.
二、SPI接口時序和數據格式更改
接口時序更改,官方SDK的SPI例子的timing_config使用的SCLK_DIV是進行過時鐘頻率比的,也就是說,SPI的CLK頻率總是會比SPI的時鐘源低,樓主是想SPI的頻率與SPI的時鐘源同頻。時序的初始化接口是spi_master_timing_init,進入接口看下實現
看下sclk_div=0xff,根據手冊可知,當為0xff時候。SPI頻率與SPI時鐘源同頻
這樣一來就可以修改以下:
三、傳輸控制TRANSCTRL配置
這個很重要,如果配置不當,數據就無法傳輸,先輯的SPI接口配置比較豐富,在主機模式下,SPI不但可以傳輸命令、地址和數據字段,而且還可以允許軟件直接控制 SPI 接口上的信號。
在官方SPI例子當中,使能了命令段和地址段,而顯示屏需要的僅僅是數據傳輸,所以需要把命令和地址段成員給禁用掉。
選擇一線或者兩線傳輸,由于所購的顯示屏并不需要MISO,所以傳輸模式設置為只寫模式即可。由此改一下代碼:
四、提供滴答測試刷屏幀率
若要測試刷屏幀率,則需要記錄刷一張圖前后的時間差,然后計算幀率。HPM6750不是ARM內核,并沒有所謂的滴答定時器,不過先輯也有類似的滴答定時器,也就是機器定時器MCHTMR,由手冊和官方例子移植過來即可,設置為1MS滴答。
由此移植便完成,測試下刷屏幀率,取一張圖,分別放于RAM和xip flash中。測試刷屏所需時間。
結果如下,用的spi顯示屏240*280分辨率,沒用dma,輪詢方式SPI,頻率為80M,ram和外置的xip flash刷圖差距不大,相差1ms以下,可見雖然flash是外置的,但是性能相當可以了。比所謂的疊封spi flash設計好太多。
RAM刷圖時間需要26ms左右,大概38fps+
xip flash 刷圖所需時間大概27ms,大概37fps.
驗證結果是比較完美的,玩了不少國產單片機,就HPM6750這款,性能與宣傳的無差多少。特別是xip flash性能。SPI外設也足夠強大,在80M的SPI頻率,不使用DMA的情況下,刷一整24*280分辨率的屏幕可達到35fps+,這對比其他國產的單片機,相同的SPI頻率,可達不到35fps的幀率刷新。
目前官方尚未有SPI DMA的參考例子,待有DMA的再進行更新,不出意外肯定是可以達到50fps+的
倉庫已更新SPI顯示屏代碼,歡迎star和fork。
https://gitee.com/RCSN/hpm6750evkmini_demo
以上為本次測評的全部內容,期待與更多產品測評官們共同解鎖“先楫芯”的魅力!
-
串口屏
+關注
關注
8文章
532瀏覽量
37423
發布評論請先 登錄
相關推薦
評論