痞子衡嵌入式半月刊: 第 103 期 這裡分享嵌入式領域有用有趣的項目/工具以及一些熱點新聞,農曆年分二十四節氣,希望在每個交節之日準時發佈一期。 本期刊是開源項目(GitHub: JayHeng/pzh-mcu-bi-weekly),歡迎提交 issue,投稿或推薦你知道的嵌入式那些事兒。 上期回 ...
痞子衡嵌入式半月刊: 第 103 期
這裡分享嵌入式領域有用有趣的項目/工具以及一些熱點新聞,農曆年分二十四節氣,希望在每個交節之日準時發佈一期。
本期刊是開源項目(GitHub: JayHeng/pzh-mcu-bi-weekly),歡迎提交 issue,投稿或推薦你知道的嵌入式那些事兒。
上期回顧 :《痞子衡嵌入式半月刊: 第 102 期》
嘮兩句
歷史上的今天:2012年7月1日,全球增加一秒,出現7:59:60
本期共 5 個項目,希望對你有幫助!
項目類
1、CherryUSB - 小而美的嵌入式USB主從協議棧
CherryUSB 是一個小而美的、可移植性高的、用於嵌入式系統(帶 USB IP)的 USB 主從協議棧。
為了方便用戶學習 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 常用於對電阻觸摸屏的功能調試,能夠為觸摸屏驅動獲得的採樣提供諸如濾波、去抖、校準等功能,通常作為觸摸屏驅動的適配層,為上層的應用提供了一個統一的介面。
3、cotParam - 基於C語言的輕量級參數管理框架
cotParam 是一個參數管理框架代碼,其功能就是統一管理軟體中的各類系統數據參數。該參數管理並不涉及數據是如何儲存的。因為有些系統數據並不需要儲存起來,只需要進行管理而已。
cotParam 主要特點有:
1. 採用表驅動方式統一管理所有參數,包括預設值、最小值和最大值等
2. 採用巨集定義快速註冊和添加參數進行管理
3. 支持基本類型參數和字元串參數
4. 支持序列化和反序列化,便於保存和讀取校驗
5. 可通過串口協議或其他協議調用介面修改參數
4、cotMenu - 輕量級多級菜單控制框架程式
cotMenu 是一個降低了耦合性,完全獨立的菜單框架,菜單顯示風格和顯示平臺完全由自己根據需求設計,而菜單操作統一由菜單模塊處理即可,提高程式的移植性。
cotMenu 主要特點有:
1. 採用鏈表方式實現多級菜單(通過配置選擇採用動態分配或者數組實現)
2. 菜單框架作為獨立模塊,拒絕和按鍵模塊、顯示模塊進行耦合
3. 在十分獨立的情況下,也保證不受菜單的顯示風格和顯示平臺影響,可自由選擇設計顯示風格和顯示平臺
4. 快捷菜單操作等
5. 可以採用表驅動的方式初始化菜單,提高代碼的可讀性
5、cotLed - 輕量級LED控制模塊
cotLed 是一個輕量級的LED控制軟體框架,可以十分方便地控制LED的各種狀態,甚至多個LED組合控制,如跑馬燈等。
cotLed 主要特點有:
1. 移植方便,無需修改,只需要初始化提供讀取相關IO 狀態寫入函數即可
2. 豐富的介面實現,
-- 可以實現單個LED亮滅、翻轉、閃爍、呼吸燈、自定義(如多少秒快閃幾次等)等多種要求的功能
-- 可以實現多個LED組合跑馬燈、流水燈等功能
-- 同時支持上述模式的次數設置等
3. 代碼量少,且代碼註釋豐富,風格統一,便於閱讀和使用
4. 如果設置某個LED為呼吸燈模式,則需要保證 cotLed_Ctrl調用周期為1毫秒(優先順序需要最高,或者定時器調度效果最好)
5. 非阻塞任務,因此裸機和操作系統都適用(操作系統下非線程安全,最好可以使用讀寫鎖,如果沒有讀寫鎖則至少使用互斥鎖)
歡迎訂閱
文章會同時發佈到我的 博客園主頁、CSDN主頁、知乎主頁、微信公眾號 平臺上。
微信搜索"痞子衡嵌入式"或者掃描下麵二維碼,就可以在手機上第一時間看了哦。
最後歡迎關註痞子衡個人微信公眾號【痞子衡嵌入式】,一個專註嵌入式技術的公眾號,跟著痞子衡一起玩轉嵌入式。
衡傑(痞子衡),目前就職於某全球頂級半導體原廠MCU系統部門,擔任高級嵌入式系統應用工程師。
專欄內所有文章的轉載請註明出處:http://www.cnblogs.com/henjay724/
與痞子衡進一步交流或咨詢業務合作請發郵件至 [email protected]
可以關註痞子衡的Github主頁 https://github.com/JayHeng,有很多好玩的嵌入式項目。
關於專欄文章有任何疑問請直接在博客下麵留言,痞子衡會及時回覆免費(劃重點)答疑。
痞子衡郵箱已被私信擠爆,技術問題不推薦私信,堅持私信請先掃碼付款(5元起步)再發。