《安富萊嵌入式週報》第346期:開源2GHz頻寬,12bit解析度,3.2Gsps取樣率示波,開源韌體安全分析器, 開源口袋電源,開源健康測量,FreeCAD

硬汉嵌入式發表於2024-11-26

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

影片:

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


目錄:

1、開源2GHz頻寬,12bit解析度,3.2Gsps取樣率示波器
2、開源嵌入式韌體安全分析器
3、TI分享的8通道隔離 ±12.288 V 模擬採集參考設計,符合湧瞬態抗擾度 EN 61000-4-5 2 類標準(±1 kV,24 A)
4、C編譯器原理書籍
5、FreeCAD V1.0版本釋出
6、兩年未更新的FatFS釋出V0.15a版本
7、開源USB Type-C口袋電源,支援3.3 -20 V,最大5 A
8、IDE相關
(1)Embedded Studio釋出V8.20版本
(2)新唐自家所有M核心晶片免費使用MDK專業版,授權到2027年9月
9、【實測】使用STM32H7板子FatFS檔案系統每秒讀寫2MB檔案,實時寫入7450個檔案不出錯,寫滿16GB SD卡
10、開源血壓訊號,PPG,ECG,聽診訊號測量裝置
11、H7-TOOL本週進展
(1)離線燒錄
增加NXP車軌晶片S32K312離線燒錄支援
增加英飛凌車軌晶片CYT4B和CYT3B離線燒錄支援
增加航順HK32C030系列
(2)加緊H7-TOOL的LUA API手冊製作,與2.27版本韌體同時釋出


1、開源2GHz頻寬,12bit解析度,3.2Gsps取樣率示波器

軟體和硬體全開源

這個是早期Haasoscope開源專案的升級版,不過這次升級與之前版本已經沒有任何關係,只是示波器名字沒變。但效能是質的飛躍

https://github.com/drandyhaas/HaasoscopePro
https://www.crowdsupply.com/andy-haas/haasoscope-pro

軟硬體軟體包:HaasoscopePro-main.zip (292.75MB)

2GHz探頭軟體包: oshw-active-probe-master.zip (3.94 MB)

效果:

規格:

兩個裝置同步,可以做到6.4Gsps取樣率

由於示波器頻寬比較高,普通探頭是無法滿足需求的,所以專門設計了一個2GHz頻寬探頭


2、開源嵌入式韌體安全分析器

https://github.com/e-m-b-a/emba?tab=readme-ov-file

EMBA 會自動發現韌體中可能存在的弱點和漏洞。例如,不安全的二進位制檔案、舊的和過時的軟體元件、可能易受攻擊的指令碼或硬編碼的密碼。EMBA 是一個命令列工具,可以生成易於使用的 Web 報告以供進一步分析

影片效果:

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

有詳細的文件說明:

https://github.com/e-m-b-a/emba/wiki


3、TI分享的8通道隔離 ±12.288 V 模擬採集參考設計,符合湧瞬態抗擾度 EN 61000-4-5 2 類標準(±1 kV,24 A)

設計指南.pdf (1.64 MB)

原理圖.pdf (1.67 MB)

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

此參考設計是具有 8 個通道的高壓模擬輸入模組。每個通道都可用於電壓和電流測量。該設計使用 16 位模數轉換器 (ADC) ADS8681,可處理 ±12.288 V 的輸入電壓。此外,該設計的四個通道能夠處理高達 ±160 V 的共模電壓。因此,使用者無需擔心接地迴路或補償電流在連線的輸入之間流動。

±12.288 V 的高壓輸入
每個通道的電壓和電流測量
4 個通道,共模電壓高達 ±160 V
-85dB 的鄰道串擾抑制
100 MΩ 輸入阻抗
浪湧瞬態抗擾度符合 EN 61000-4-5 2 類標準(±1 kV,24 A)


4、C編譯器原理書籍

有助於深入瞭解C以及編譯原理

Modern Compiler Implementation in C.pdf (5.17 MB)

https://github.com/ethanhe42/Mod ... on-in-C/tree/master

每個章節配套例題


5、FreeCAD V1.0版本釋出

https://hackaday.com/2024/11/20/freecad-version-1-0-released/

經過 22 年的發展,FreeCAD 終於達到了 1.0 版的里程碑

各大平臺都提供了下載

影片:

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


6、兩年未更新的FatFS釋出V0.15a版本

http://elm-chan.org/fsw/ff/

上一次更新還是2022年的11月份.

ff15a.zip

ffsample.zip

更新記錄:


7、開源USB Type-C口袋電源,支援3.3 -20V,最大5A

https://github.com/CentyLab/PocketPD
https://www.crowdsupply.com/centylab/pocketpd

電壓和電流可調,電壓支援3.3V-20V,單步50mV可調。電流1A-5A可調,單步50mA可調。

規格


8、IDE相關

1、Embedded Studio釋出V8.20版本

https://www.segger.com/downloads/embedded-studio

2、新唐自家所有M核心晶片免費使用MDK專業版,授權到2027年9月

各家晶片廠商都在折騰GCC + eclipse/vscode免費方案的時候,新唐不折騰這些了,直接讓大家免費使用MDK。

新聞如下:

https://www.nuvoton.com/tool-and-software/ide-and-compiler/keil-mdk-nuvoton-edition/index.html

Arm 與新唐科技為軟體開發者提供免費的Keil® MDK專業工具:Keil MDK Nuvoton Edition - Full Cortex-M,此服務可支援所有基於 Arm® Cortex-M 處理器為核心的新唐產品,包括 Arm Cortex-M0/M0+/M23/M33/M4/M55/M7/M85,並可用於商業用途。

此服務亦包含 Arm Keil MDK v6 提供的所有工具和軟體套件,包括 Arm C/C++ 編譯程式、Arm Keil Studio Pack - the Visual Studio Code extensions、Keil µVision 與除錯環境。

此免費服務的使用範圍僅適用於 Keil MDK 5.37(含) 或更高的版本,並且僅支援 Arm Compiler 6。

安裝說明:

https://www.nuvoton.com/tool-and-software/ide-and-compiler/keil-download/


9、【實測】使用STM32H7板子FatFS檔案系統每秒讀寫2MB檔案,實時寫入7450個檔案不出錯,寫滿16GB SD卡

【測試平臺】

STM32-V7開發板

【測試例子】

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

V7-025_FatFS檔案系統例子(SD卡 V1.2)

【測試條件和校驗】

執行例子裡面的命令6,命令6是個測速函式,每次寫入2MB檔案,同時讀取出來校驗,保證寫入的沒問題。

/*
*********************************************************************************************************
*        函 數 名: WriteFileTest
*        功能說明: 測試檔案讀寫速度
*        形    參:無
*        返 回 值: 無
*********************************************************************************************************
*/
static void WriteFileTest(void)
{
        FRESULT result;
        char path[64]; 
        uint32_t bw;
        uint32_t i,k;
        uint32_t runtime1,runtime2,timelen;
        uint8_t err = 0;
        static uint32_t s_ucTestSn = 0;
  
          
        for (i = 0; i < sizeof(g_TestBuf); i++)
        {
                g_TestBuf[i] = (i / 512) + '0';
        }
  
          /* 掛載檔案系統 */
        result = f_mount(&fs, DiskPath, 0);                        /* Mount a logical drive */
        if (result != FR_OK)
        {
                printf("掛載檔案系統失敗 (%s)\r\n", FR_Table[result]);
        }
  
        /* 開啟檔案 */
        sprintf(path, "%sS%05d.txt", DiskPath, s_ucTestSn++); /* 每寫1次,序號遞增 */      
        result = f_open(&file, path, FA_CREATE_ALWAYS | FA_WRITE);
  
        /* 寫一串資料 */
        printf("開始寫檔案%s %dKB ...\r\n", path, TEST_FILE_LEN / 1024);
          
        runtime1 = bsp_GetRunTime();        /* 讀取系統執行時間 */
        for (i = 0; i < TEST_FILE_LEN / BUF_SIZE; i++)
        {
                result = f_write(&file, g_TestBuf, sizeof(g_TestBuf), &bw);
                if (result == FR_OK)
                {
                        if (((i + 1) % 8) == 0)
                        {
                                printf(".");
                        }
                }
                else
                {
                        err = 1;
                        printf("%s檔案寫失敗\r\n", path);
                        break;
                }
        }
        runtime2 = bsp_GetRunTime();        /* 讀取系統執行時間 */
          
        if (err == 0)
        {
                timelen = (runtime2 - runtime1);
                printf("\r\n  寫耗時 : %dms   平均寫速度 : %dB/S (%dKB/S)\r\n",
                        timelen,
                        (TEST_FILE_LEN * 1000) / timelen,
                        ((TEST_FILE_LEN / 1024) * 1000) / timelen);
        }
  
        f_close(&file);                /* 關閉檔案*/
  
  
        /* 開始讀檔案測試 */
        result = f_open(&file, path, FA_OPEN_EXISTING | FA_READ);
        if (result !=  FR_OK)
        {
                printf("沒有找到檔案: %s\r\n", path);
                return;
        }
  
        printf("開始讀檔案 %dKB ...\r\n", TEST_FILE_LEN / 1024);
          
        runtime1 = bsp_GetRunTime();        /* 讀取系統執行時間 */
        for (i = 0; i < TEST_FILE_LEN / BUF_SIZE; i++)
        {
                result = f_read(&file, g_TestBuf, sizeof(g_TestBuf), &bw);
                if (result == FR_OK)
                {
                        if (((i + 1) % 8) == 0)
                        {
                                printf(".");
                        }
  
                        /* 比較寫入的資料是否正確,此語句會導致讀卡速度結果降低到 3.5MBytes/S */
                        for (k = 0; k < sizeof(g_TestBuf); k++)
                        {
                                if (g_TestBuf[k] != (k / 512) + '0')
                                {
                                          err = 1;
                                        printf("Speed1.txt 檔案讀成功,但是資料出錯\r\n");
                                        break;
                                }
                        }
                        if (err == 1)
                        {
                                break;
                        }
                }
                else
                {
                        err = 1;
                        printf("Speed1.txt 檔案讀失敗\r\n");
                        break;
                }
        }
  
        runtime2 = bsp_GetRunTime();        /* 讀取系統執行時間 */
          
        if (err == 0)
        {
                timelen = (runtime2 - runtime1);
                printf("\r\n  讀耗時 : %dms   平均讀速度 : %dB/S (%dKB/S)\r\n", timelen,
                        (TEST_FILE_LEN * 1000) / timelen, ((TEST_FILE_LEN / 1024) * 1000) / timelen);
        }
  
        /* 關閉檔案*/
        f_close(&file);
  
        /* 解除安裝檔案系統 */
        f_mount(NULL, DiskPath, 0);
}

【實測】

1500個檔案時:

5100個檔案時:

寫滿SD卡,特別注意,但SD卡還剩下一點空間的時候,比如200M時,建議停止再寫入,防止寫爆後損壞SD卡

10、開源血壓訊號,PPG,ECG,聽診訊號測量裝置

之前給大家分享多款這種開源,本次再為大家分享一款

https://github.com/MilosRasic98/ ... gnalMeasuringDevice

軟硬體全部開源,包括3D列印的所有 CAD 檔案以及資料分析的測試結果。該專案的主要目標是能夠記錄、儲存和分析這些訊號。

11、H7-TOOL本週進展

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

1、離線燒錄

(1)增加NXP車軌晶片S32K312離線燒錄支援

(2)增加英飛凌車軌晶片CYT4B和CYT3B離線燒錄支援

詳細說明:時隔半年,再次死磕,成功搞定H7-TOOL離線燒錄英飛凌車規級M7多核晶片CYT4B

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

(3)增加航順HK32C030系列

2、加緊H7-TOOL的LUA API手冊製作,與2.27版本韌體同時釋出

爭取下個月初2.27版本韌體釋出時,同時釋出LUA API手冊,方便大家查閱

相關文章