《安富萊嵌入式週報》第315期:開源USB高速分析儀,8GHz示波器開發, 600行C編寫RISC-V內核,英特爾推出用於開發人員等寬字體,便攜物聯網監測器

週報彙總地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104

 

視頻版:

https://www.bilibili.com/video/BV1gV4y117UD/


1、開源USB2.0高速分析儀

https://github.com/ataradov/usb-sniffer

usb-sniffer-main.zip (2.05 MB)

分析儀上位機直接採用的Wireshark。

硬件採用Cypress CY7C68013A MCU + Lattice LCMXO2 FPGA + Microchip USB3343 USB PHY實現


2、8GHz示波器開發

https://hackaday.io/project/167292-8-ghz-sampling-oscilloscope

這是一個未完成作品,不過作者分享的一些設計問題,有興趣可以看看

做了很多測試:

硬件也做了很多:


3、創意設計,RGB 全綵熒光管

這裏是採用的LCD顯示屏實現的效果,視頻實際展示效果很棒

視頻:

https://www.armbbs.cn/forum.php?mod=viewthread&tid=119648

截圖:


4、超低功耗無線振動傳感器監控電機參考設計,實現預防性維護,CR2032鈕釦電池可供電10年

https://www.ti.com/tool/TIDA-01469

本地計算2048點 FFT振動頻譜,藍牙無線,傳輸距離72米,平均待機電流879.5nA

框圖:


5、小知識:爲什麼我們看到的各種SD卡移植在底層接口都沒有做擦除操作

本質原因是SD卡有擦寫均衡機制,每次主機寫入數據時到相同的邏輯地址,實際上數據會被寫入一個新分配的空物理地址。如果人爲的對相同地址擦除再寫入,實際上是破環了這個機制。

閃迪的規格書:

04db416b291011446889dbd6129e2644.pdf (405.78 KB)


6、軟硬件開源便攜監測器CatSniffer升級至V3.1,支持Zigbee,藍牙,LoRa,Thread,Sub 1GHz,6lowpan

https://github.com/ElectronicCats/CatSniffer

規格和效果:

兼容各種Sniffer監測組件,

比如TI的


7、軟件資訊

(1)IAR9.40發佈

https://www.armbbs.cn/forum.php?mod=viewthread&tid=99548


(2)Silicon Labs的Gecko SDK升級至V4.3,加強各種物聯網協議支持

https://community.silabs.com/s/s ... t-v43-now-available


(3)Autodesk宣佈計劃於2026年停止支持EAGLE PCB

https://www.autodesk.com/support/technical/article/caas/sfdcarticles/sfdcarticles/Autodesk-EAGLE-Announcement-Next-steps-and-FAQ.html


(4)英飛凌全家桶開發環境ModusToolbox升級至V3.1

https://community.infineon.com/t5/ModusToolbox-General/Release-Announcement-ModusToolbox-3-1-available-for-download/td-p/447143

 

 

(5)上海先楫半導體獲TUV萊茵國內首張ISO26262 和IEC61508 功能安全管理體系雙認證


8、硬件資訊:

(1)Silicon Labs發佈面向物聯網的單片機AI芯片FG28 SoC,支持藍牙/sub-GHz雙頻,實現遠距離廣覆蓋Wi-SUN及專有協議連接

https://www.silabs.com/wireless/ ... b-ghz-wireless-socs

業界首款集成AI/ML硬件加速器的sub-Ghz SoC,業界領先的Secure Vaul安全技術。

FG28爲用戶提供了一種在網絡上配置和部署新設備的簡便方法,而且sub-Ghz頻段的設計旨在支持超過一英里的設備間通信。


(2)新版I3C HCI V1.2規範

 mipi-I3C-HCI-specification-v1-2p.pdf (4.15 MB)


(3)揚聲器性能測量筆記

 AppNote-Loudspeaker-EA-Measurements.pdf (1.47 MB)


9、純硬件打造的上古遊戲機雅達利

https://www.atariage.com/2600/archives/schematics/index.html
https://docs.dev-docs.org/htm/search.php?find=_s


10、600行C編寫RISC-V內核

https://github.com/mnurzia/rv

用這個代碼來學習RISC-V內核非常不錯

rv-main.zip (13.29 KB)

支持的指令:

代碼如下:

 

#include <stdio.h>
#include <string.h>
 
#include "rv.h"
 
rv_res load_cb(void *user, rv_u32 addr, rv_u8 *data) {
  if (addr - 0x80000000 > 0x10000) /* Reset vector is 0x80000000 */
    return RV_BAD;
  *data = ((rv_u8 *)(user))[addr - 0x80000000];
  return RV_OK;
}
 
rv_res store_cb(void *user, rv_u32 addr, rv_u8 data) {
  if (addr - 0x80000000 > 0x10000)
    return RV_BAD;
  ((rv_u8 *)(user))[addr - 0x80000000] = data;
  return RV_OK;
}
 
rv_u32 program[2] = {
    /* _start: */
    0x02A88893, /* add a7, a7, 42 */
    0x00000073  /* ecall */
};
 
int main(void) {
  rv_u8 mem[0x10000];
  rv cpu;
  rv_init(&cpu, (void *)mem, &load_cb, &store_cb);
  memcpy((void *)mem, (void *)program, sizeof(program));
  while (rv_step(&cpu) != RV_EECALL) {
  }
  printf("Environment call @ %08X: %u\n", cpu.pc, cpu.r[17]);
  return 0;
}

 

 

11、英特爾推出一款等寬免費字體One Mono,提高可讀性,解決開發人員眼疲勞,方便糾錯

https://github.com/intel/intel-one-mono

這是一個富有表現力的等寬字體家族,在構建時充分考慮了清晰度、易讀性和開發人員的需求。

最大程度地提高可讀性,以解決開發人員的眼睛疲勞,並減少編輯錯誤

ttf.zip (276.95 KB)


12、Makefile基礎入門文檔

當前只有英文版,搞箇中文版就更好了

https://makefiletutorial.com/#makefile-cookbook


13、好帖,圖文並茂介紹C的動態內存分配的malloc和free實現

https://samwho.dev/memory-allocation/


14、H7-TOOL本週進展

H7-TOOL詳細介紹:https://www.armbbs.cn/forum.php?mod=viewthread&tid=89934

開始着手H7-TOOL新版固件2.22收尾工作,本次升級更新的內容非常多,同時感謝大家反饋的問題,大部分得到修復

這周在實現uCOS-II的Trace功能上花了不少時間,uCOS-II不像已經發布的uCOS-III Trace,uCOS-II獲取通信組件的信息後,使用LUA做了個任務調度器計算,用於獲取當前等待信號量,消息隊列,消息郵箱等通信組件的任務和任務個數,含等待的最高優先級任務:

 

if(OSLowestPrio <= 63) then
        OSEventCnt = pg_read16(pcb + 8)
        OSEventGrp = pg_read8(pcb + 0x0a)
        for i=0, OS_EVENT_TBL_SIZE, 1 do
                off = (OSEventGrp & (1<<i) ) >> i
                if(off == 1) then
                        for j=0, 7, 1 do
                                OSEventTbl1 = pg_read8(pcb + 0x0b + i)
                                off = (OSEventTbl1 & (1<<j) ) >> j
                                if(off == 1) then
                                        TaskCount = TaskCount + 1
                                        TaskBuffer[TaskCount] = j + i*8
                                end
                        end
                end
        end
else
        OSEventCnt = pg_read16(pcb + 8)
        OSEventGrp = pg_read16(pcb + 0x0a)
        OSEventTbl1 = pg_read16(pcb + 0x0c)
  
        for i=0, OS_EVENT_TBL_SIZE, 1 do
                off = (OSEventGrp & (1<<i) ) >> i
                if(off == 1) then
                        for j=0, 15, 1 do
                                OSEventTbl1 = pg_read16(pcb + 0x0b + 2*i)
                                off = (OSEventTbl1 & (1<<j) ) >> j
                                if(off == 1) then
                                        TaskCount = TaskCount + 1
                                        TaskBuffer[TaskCount] = j + i*8
                                end
                        end
                end
        end
end

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章