《痞子衡嵌入式半月刊》 第 103 期

痞子衡發表於2024-07-01

痞子衡嵌入式半月刊: 第 103 期

這裡分享嵌入式領域有用有趣的專案/工具以及一些熱點新聞,農曆年分二十四節氣,希望在每個交節之日準時釋出一期。

本期刊是開源專案(GitHub: JayHeng/pzh-mcu-bi-weekly),歡迎提交 issue,投稿或推薦你知道的嵌入式那些事兒。

上期回顧《痞子衡嵌入式半月刊: 第 102 期》

嘮兩句

歷史上的今天:2012年7月1日,全球增加一秒,出現7:59:60

本期共 5 個專案,希望對你有幫助!

專案類

1、CherryUSB - 小而美的嵌入式USB主從協議棧

CherryUSB 是一個小而美的、可移植性高的、用於嵌入式系統(帶 USB IP)的 USB 主從協議棧。

  • 專案地址:https://github.com/cherry-embedded/CherryUSB

為了方便使用者學習 USB 基本知識、列舉、驅動載入、IP 驅動,因此 CherryUSB 程式碼具備以下優點:

- 程式碼精簡,邏輯簡單,無複雜 C 語言語法
- 樹狀化程式設計,程式碼層層遞進
- Class 驅動和 porting 驅動模板化、精簡化
- API 分類清晰(從機:初始化、註冊類、命令回撥類、資料收發類;主機:初始化、查詢類、資料收發類)

為了方便使用者使用 USB 介面,考慮到使用者學習過 uart 和 dma,因此 CherryUSB 設計的資料收發類介面具備以下優點:

- 等價於使用 uart tx dma/uart rx dma
- 收發長度沒有限制,使用者不需要關心 USB 分包過程(porting 驅動做分包過程)

考慮到 USB 效能問題,儘量達到 USB 硬體理論頻寬,因此 CherryUSB 設計的資料收發類介面具備以下優點:

- Porting 驅動直接對接暫存器,無抽象層封裝
- Memory zero copy
- IP 如果帶 DMA 則使用 DMA 模式(DMA 帶硬體分包功能)
- 長度無限制,方便對接硬體 DMA 並且發揮 DMA 的優勢
- 分包功能在中斷中處理

2、tslib - 嵌入式中使用最廣泛的電阻觸控式螢幕校正演算法庫

tslib 是嵌入式系統裡用得最多的觸控式螢幕校正演算法庫,其充分利用了矩陣的平移,旋轉和縮放等運算。tslib 常用於對電阻觸控式螢幕的功能除錯,能夠為觸控式螢幕驅動獲得的取樣提供諸如濾波、去抖、校準等功能,通常作為觸控式螢幕驅動的適配層,為上層的應用提供了一個統一的介面。

  • 專案地址:https://github.com/libts/tslib

3、cotParam - 基於C語言的輕量級引數管理框架

cotParam 是一個引數管理框架程式碼,其功能就是統一管理軟體中的各類系統資料引數。該引數管理並不涉及資料是如何儲存的。因為有些系統資料並不需要儲存起來,只需要進行管理而已。

  • 專案地址:https://gitee.com/cot_package/cot_param

cotParam 主要特點有:

1. 採用表驅動方式統一管理所有引數,包括預設值、最小值和最大值等
2. 採用宏定義快速註冊和新增引數進行管理
3. 支援基本型別引數和字串引數
4. 支援序列化和反序列化,便於儲存和讀取校驗
5. 可透過串列埠協議或其他協議呼叫介面修改引數

4、cotMenu - 輕量級多級選單控制框架程式

cotMenu 是一個降低了耦合性,完全獨立的選單框架,選單顯示風格和顯示平臺完全由自己根據需求設計,而選單操作統一由選單模組處理即可,提高程式的移植性。

  • 專案地址:https://gitee.com/cot_package/cot_menu

cotMenu 主要特點有:

1. 採用連結串列方式實現多級選單(透過配置選擇採用動態分配或者陣列實現)
2. 選單框架作為獨立模組,拒絕和按鍵模組、顯示模組進行耦合
3. 在十分獨立的情況下,也保證不受選單的顯示風格和顯示平臺影響,可自由選擇設計顯示風格和顯示平臺
4. 快捷選單操作等
5. 可以採用表驅動的方式初始化選單,提高程式碼的可讀性

5、cotLed - 輕量級LED控制模組

cotLed 是一個輕量級的LED控制軟體框架,可以十分方便地控制LED的各種狀態,甚至多個LED組合控制,如跑馬燈等。

  • 專案地址:https://gitee.com/cot_package/cot_led

cotLed 主要特點有:

1. 移植方便,無需修改,只需要初始化提供讀取相關IO 狀態寫入函式即可
2. 豐富的介面實現,
   -- 可以實現單個LED亮滅、翻轉、閃爍、呼吸燈、自定義(如多少秒快閃幾次等)等多種要求的功能
   -- 可以實現多個LED組合跑馬燈、流水燈等功能
   -- 同時支援上述模式的次數設定等
3. 程式碼量少,且程式碼註釋豐富,風格統一,便於閱讀和使用
4. 如果設定某個LED為呼吸燈模式,則需要保證 cotLed_Ctrl呼叫週期為1毫秒(優先順序需要最高,或者定時器排程效果最好)
5. 非阻塞任務,因此裸機和作業系統都適用(作業系統下非執行緒安全,最好可以使用讀寫鎖,如果沒有讀寫鎖則至少使用互斥鎖)

歡迎訂閱

文章會同時釋出到我的 部落格園主頁CSDN主頁知乎主頁微信公眾號 平臺上。

微信搜尋"痞子衡嵌入式"或者掃描下面二維碼,就可以在手機上第一時間看了哦。

相關文章