當 EcuBus-Pro + UTA0401 遇上 NSUC1500

文章目錄

    • 1.前言
    • 2.EcuBus-Pro簡介
      • 2.1 官方地址
      • 2.2 概覽
    • 3.納芯微NSUC1500簡介
      • 3.1 NSUC1500概述
      • 3.2 產品特性
    • 4.測試環境
    • 5.基礎功能
      • 5.1 數據發送
      • 5.2 數據監控
    • 6.自動化功能
      • 6.1 腳本創建
      • 6.2 腳本編輯
      • 6.3 腳本編輯與測試
    • 7.音樂律動
      • 7.1 導入例程
      • 7.2 效果展示
    • ECB工程

1.前言

最近在和一些氛圍燈客戶交流時發現,現在作為LIN從節點的氛圍燈SOC基本不需要做動效(如音樂律動),只需要按照LDF文件的定義,每隔10ms接收LIN主機(如智能座艙)給過來的顏色坐標,實現對應的亮度即可。

基于以上情況,如果氛圍燈客戶能夠在家里實現LIN主機的功能,模擬實車測試環境;就可以先在家把功能調試OK,再去實車驗證;大大減少出差頻次和溝通成本。

如果要在家模擬實車測試環境,最好的選擇肯定是CANoe,但是費用比較高昂。本文介紹一種性價比極高的方式,使用EcuBUs-Pro + 圖莫斯UTA0401去模擬實車測試環境,借助納芯微最新的氛圍燈芯片NSUC1500整體實現音樂律動效果。

2.EcuBus-Pro簡介

2.1 官方地址

EcuBus-Pro的官方地址如下:

  • https://app.whyengineer.com/

官方界面如下圖,如果想要詳細了解EcuBus-Pro,可以通過上面地址進行訪問。
官方界面

2.2 概覽

EcuBus界面

EcuBus-Pro 是一款開源的汽車診斷工具,是商業工具(如CAN-OE)的替代品。它為 ECU 開發和測試提供了一整套解決方案,具有以下特點:

  • 開源免費:完全開源,免費使用。
  • 現代化且直觀的用戶界面:操作簡便,易于上手。
  • 跨平臺支持:支持 Windows 和 Linux 系統。
  • 多硬件支持:
    • PEAK:支持 CAN、CAN-FD、LIN。
    • KVASER:支持 CAN、CAN-FD。
    • ZLG:支持 CAN、CAN-FD。
    • Toomoss:支持 CAN、CAN-FD、LIN(新增)。
  • 全面的診斷功能:
    • 診斷協議:基于CAN/CAN-FD/LIN的UDS、基于Ethernet的DoIP等。
  • 腳本功能:基于高級 TypeScript 的自動化腳本功能,詳情見鏈接。
  • 測試功能:提供 HIL 測試框架。
  • 數據庫支持
    • LIN LDF:支持編輯和導出。
    • CAN DBC:支持查看。
  • 數據可視化:實時信號圖表繪制與分析。
  • 命令行工具:提供功能完備的命令行界面,支持自動化和集成。

3.納芯微NSUC1500簡介

3.1 NSUC1500概述

NSUC1500 是一款基于 ARM Cortex-M3 的 MCU,集成了 4 路 LED 驅動器,用于控制 RGB(或 RGBW)環境光。

3.2 產品特性

摘錄官網的產品特性介紹如下:

  • ARM Cortex-M3 32 位內核
  • 32KB 閃存(ECC),2KB EEPROM(ECC)
  • 2KB SRAM,512B 數據 RAM,512B NVR(ECC)
  • 32MHz高精度振蕩器
  • 35KHz低功耗低速時鐘
  • 寬頻帶PLL(最高 32MHz)
  • 6V至28V寬電源電壓范圍
  • 1個12位高精度 ADC
  • 4路高精度 LED 驅動器,最大電流 64mA
  • LIN PHY 和 LIN UART 控制器支持 LIN 2.x 和 SAE J2602
  • 4路增強型 PWM(16 位)輸出,用于 LED
  • 2個16位通用定時器
  • 1個數字看門狗和1個窗口看門狗
  • 1個SPI(主機)和1個SSI(從機),支持 4 線或 3 線通信
  • 頻率擴展譜(內部時鐘)
  • 完整的保護和診斷功能:
    • LIN 接口故障
    • RGB 故障
    • 電壓供應故障
    • 熱關斷
  • 支持 ROM 中的 UDS 啟動加載程序
  • 封裝:QFN-20 / SOP8 / HSOP8
  • 符合 AEC-Q100 Grade 1 可靠性標準
  • 符合 ROHS 和 Reach 標準

4.測試環境

整個測試環境如下圖所示:

  • EcuBuc-Pro上位機借助圖莫斯UTA0401模擬LIN主機,用于給NSUC1500發生顏色控制命令;
  • 導光條兩端各放一個NSUC1500,并且兩個NSUC1500通過LIN總線連接,可以同步接收相同信號。

測試環境

5.基礎功能

在介紹功能之前,需要確定當前EcuBUs-Pro的版本為0.8.26及以上。如果版本較低,打開軟件,setting會有綠點提示軟件有更新,更新流程如下圖。

EcuBus-Pro更新

更新完成之后,確認下版本是0.8.26版本或以上:

EcuBus-Pro版本

5.1 數據發送

  1. 打開EcuBUs-Pro,創建新工程,如下圖所示。

新建空白工程

  1. 接著導入LDF文件,創建數據庫,如下圖所示。

創建數據庫

  1. 接著保存數據庫。如果需要對LDF文件進行修改,可以通過EcuBus-Pro自帶的上位機進行修改,然后再保存數據庫。如果需要將修改后的LDF導出,可以點擊LDF File菜單,將文件內容進行復制,粘貼到需要保存的地方。

LDF文件處理

  1. 將圖莫斯的UTA0401連接到上位機,并在EcuBus-Pro增加該設備,操作流程如下圖。

增加設備

  1. 新建一個交互界面,并連接到設備UTA0401,操作方法如下圖。

增加交互界面

  1. 連接設備之后,交互界面就會顯示設備關聯的數據庫,如下圖所示。可以通過該界面開啟需要的調度表。

  1. 為了方便修改主機寫命令中的信號變量值,需要再創建一個主機節點,操作如下圖。

**注意:**在編輯節點的參數時,需要先通過Connected界面連接到對應的器件,獲取數據庫信息。

創建主機節點

  1. 創建之后可以發現,主機發布的信號都顯示出來,并且可以修改,如下圖所示。

**注意:**有的時候總線上缺少從機節點時,也可以通過增加從機節點,并設置回復的數據,用于防止超時。

主機發布的信號

  1. 保存下當前配置的工程,操作方法如下圖所示。

保存工程

  1. 測試下數據發送功能,看能否正確讓燈點亮,操作流程如下圖。

測試數據發送功能

5.2 數據監控

  1. 如果需要實時監控LIN總線上的數據,可以打開Trace界面,操作如下圖。

創建Trace界面

  1. 如果想要查看子節點回復的信號值(如電壓、溫度信息),可以暫停Trace界面,點一下幀的下拉按鈕,能夠看到原始值,以及編碼后的值,如下圖所示。

Trace界面信息

3.如果有些信號的物理值希望能夠實時查看,或者查看變化趨勢,可以使用Graph功能,如下圖所示。

創建Graph界面

4.如果想顯示信號的邏輯值對應的文本,使用Graph里的Gauge新增信號變量即可。

注意:Gauge新增變量會自動識別是信號編碼使用物理值還是邏輯值,物理值就用儀表顯示,邏輯值就用文本框顯示。

邏輯值顯示

6.自動化功能

EcuBus-Pro支持通過TypeScript腳本實現自動化功能,下面介紹具體的使用方法。

6.1 腳本創建

  1. 首先在ECB工程所在文件夾創建一個空的TypeScript腳本,如下圖所示。

新建TS腳本

  1. 然后在之前的工程導入改腳本,操作方式如下圖。

導入TS腳本

  1. 點擊Edit按鈕會自動創建所需要的文件夾和文件以及VS Code工程,并自動打開VS Code工程。

注意:如果要用TS腳本實現自動化,用戶需要提前安裝VS Code。

  1. EcuBus-Pro已經提供了一些API函數,點擊Script Api按鈕就可以跳轉進行查閱。

Script Api

6.2 腳本編輯

接下來基于腳本實現一個帶伽馬校準的R、G、B三色循環呼吸的燈光效果。

  1. 導入模塊和定義接口
import { setSignal } from "ECB";interface Color {r: number;g: number;b: number;
}
  • import { setSignal } from "ECB";:從ECB模塊中導入setSignal函數,用于設置信號。

  • interface Color:定義一個Color接口,包含rgb三個屬性,分別代表紅色、綠色和藍色的顏色值。

  1. 定義LightController
class LightController {private currentColor: Color;private intervalId: NodeJS.Timeout | null = null;constructor() {this.currentColor = { r: 0, g: 0, b: 0 };}private setColor(r: number, g: number, b: number): void {this.currentColor = { r, g, b };setSignal('EcuBus-Pro_NSUC1500.s_R', r);setSignal('EcuBus-Pro_NSUC1500.s_G', g);setSignal('EcuBus-Pro_NSUC1500.s_B', b);}private gammaCorrection(value: number, gamma: number = 2.2): number {return Math.round(255 * Math.pow(value / 255, gamma));}startBreathingEffect(step: number = 5, delay: number = 50): void {let currentChannel: keyof Color = 'r';let increasing = true;let rawValue = 0;this.intervalId = setInterval(() => {if (increasing) {rawValue += step;if (rawValue >= 255) {rawValue = 255;increasing = false;}} else {rawValue -= step;if (rawValue <= 0) {rawValue = 0;increasing = true;if (currentChannel === 'r') {currentChannel = 'g';} else if (currentChannel === 'g') {currentChannel = 'b';} else {currentChannel = 'r';}}}const correctedValue = this.gammaCorrection(rawValue);const color = { ...this.currentColor };color[currentChannel] = correctedValue;this.setColor(color.r, color.g, color.b);}, delay);}stopBreathingEffect(): void {if (this.intervalId) {clearInterval(this.intervalId);this.intervalId = null;}}
}
  • 私有屬性:

    • currentColor:存儲當前燈光的顏色。

    • intervalId:存儲 setInterval 返回的定時器 ID,用于停止呼吸效果。

  • 構造函數:初始化currentColor為黑色(RGB 值均為 0)。

  • 私有方法:

    • setColor:設置當前燈光的顏色,并調用 setSignal 函數更新信號。

    • gammaCorrection:對顏色值進行伽馬校正,以提高顏色的視覺效果。

  • 公有方法:

    • startBreathingEffect:啟動燈光的呼吸效果,通過 setInterval 定時更新顏色值。

    • stopBreathingEffect:停止燈光的呼吸效果,清除定時器。

  1. 主函數和初始化
function main() {const lightController = new LightController();lightController.startBreathingEffect();
}Util.Init(() => {main();
});Util.End(() => {console.log('end');return new Promise((resolve) => {resolve();});
});
  • main函數:創建 LightController 實例并啟動呼吸效果。

  • Util.InitUtil.End:可能是自定義的初始化和結束函數,分別在程序開始和結束時執行相應的操作。

6.3 腳本編輯與測試

  1. 將編輯好的腳本保存之后關閉,在EcuBus-Pro中導入該腳本并進行編譯,如下圖所示,如果沒有問題,會提示編譯成功。

腳本編譯

  1. 接著開啟調度表,并打開Graph窗口觀察變化變化情況。如下動圖所示,R、G、B三個信號變量的變化趨勢和經過伽馬校驗的呼吸效果類似。

RGB

7.音樂律動

關于音樂律動的EcuBus-Pro工程已經做好,放在文末的百度網盤鏈接了。

7.1 導入例程

  1. 下載文末鏈接的EcuBus-Pro工程,并解壓。

  2. 然后打開里面的ecb工程。

打開ECB工程

  1. 如果手上的NSUC1500不是原廠自帶例程,或者使用其他芯片,需要修改下氛圍燈芯片的軟件,和ecb工程的LIN通信矩陣對應上。

顏色控制命令

  1. 選擇ecb工程所在的ts腳本,并進行編譯。

編譯腳本

  1. 編譯成功后,會有綠色字體提示。

編譯成功

  1. 接著打開設備,并開啟調度表st_pwm_test,因為這個調度表有控制RGB的命令,音樂律動的實時性會好些,同時也可以打開Graph界面查看RGB的實時變化。

音樂律動實時變化

7.2 效果展示

最多的效果如下視頻所示:

音樂律動-黑夜

ECB工程

音樂律動的ECB工程如下百度網盤鏈接:

  • 鏈接: https://pan.baidu.com/s/1jV0G_uYC17gNSGcrJ1D3DQ
  • 提取碼: u5ej

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/74081.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/74081.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/74081.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

說說Redis的內存淘汰策略?

大家好&#xff0c;我是鋒哥。今天分享關于【說說Redis的內存淘汰策略?】面試題。希望對大家有幫助&#xff1b; 說說Redis的內存淘汰策略? 1000道 互聯網大廠Java工程師 精選面試題-Java資源分享網 Redis的內存淘汰策略用于管理當內存達到最大限制時&#xff0c;如何處理過…

Python實現音頻數字水印方法

數字水印技術可以將隱藏信息嵌入到音頻文件中而不明顯影響音頻質量。下面我將介紹幾種在Python中實現音頻數字水印的方法。 方法一&#xff1a;LSB (最低有效位) 水印 import numpy as np from scipy.io import wavfile def embed_watermark_lsb(audio_path, watermark, ou…

Altium Designer 24 PCB 走線倒圓弧方法

Altium Designer 24 PCB 走線倒圓弧方法 問題描述解決方法設置倒圓弧參數選擇需要優化的走線進行走線優化 優化效果展示 在 PCB 設計中&#xff0c;走線轉角過于尖銳不僅影響美觀&#xff0c;還可能引起信號完整性問題。本文介紹如何在 Altium Designer 24 中通過倒圓弧優化走線…

Cookie與Token詳解及測試需重點關注點

在現代Web應用中&#xff0c;Cookie 和 Token 是兩種常見的身份驗證與會話管理機制。它們分別在不同的場景下扮演著重要的角色&#xff0c;在性能、靈活性和安全性方面具有各自的特點。作為測試人員&#xff0c;理解它們的工作原理以及如何對其進行有效的測試&#xff0c;是保證…

Unity 2022.3.x部分Android設備播放視頻黑屏問題

Android平臺視頻兼容性問題很多…類似的黑屏問題真的很頭大&#xff0c;總結一些常見問題&#xff1a; 1. 視頻文件不支持壓縮 如果使用AssetBundle加載視頻&#xff0c;這個AssetBundle壓縮格式要選None。有人可能會說最新版Unity已經支持bundle壓縮下播放視頻&#xff0c;穩…

Redis - 概述

目錄 ?編輯 一、什么是redis 二、redis能做什么&#xff08;有什么特點&#xff09;&#xff1f; 三、redis有什么優勢 四、Redis與其他key-value存儲有什么不同 五、Redis命令 六、Redis數據結構 1、基礎數據結構 2、高級數據結構 一、什么是redis 1、redis&#x…

數據庫部署在服務器表不存在解決方案

MySQL 數據庫表不存在錯誤解決方案 MySqlException (0x80004005): Table store.SysLogOperate doesnt exist 服務器用的mysql5.6 用這個表syslogoperate只是全是小寫 看起來你在使用 Pomelo.EntityFrameworkCore.MySql 作為 MySQL 數據庫的提供程序&#xff0c;并且在初始化…

圖靈完備——游戲中進行實踐

圖靈完備 簡述結構一、基本邏輯電路1、低電平2、高電平3、非門4、與門5、三路與門6、或門7、三路或門8、與非門9、或非門10、異或門11、同或門 二、算數運算&&存儲器1、二進制速算2、成對的麻煩 簡述 這周就要學習計算機組成原理了&#xff0c;為了學起來不那么吃力&am…

踏過強化學習的每一步推導

給定 l [ a n , . . . , a 0 ] l[a_n, ..., a_0] l[an?,...,a0?]&#xff0c;現在 for idx in range(len(l)-2, -1, -1):l[idx] l[idx1] * ld注&#xff1a;這里的ld就是 λ \lambda λ&#xff0c;定義 λ 0 1 \lambda^01 λ01 證明變換后&#xff1a; l [ ∑ i 0 n …

AI小白的第七天:必要的數學知識(概率)

概率 Probability 1. 概率的定義 概率是一個介于 0 和 1 之間的數&#xff0c;表示某個事件發生的可能性&#xff1a; 0&#xff1a;事件不可能發生。1&#xff1a;事件必然發生。0 到 1 之間&#xff1a;事件發生的可能性大小。 例如&#xff0c;擲一枚公平的硬幣&#xf…

UE5 + Rider + VsCode 接入騰訊的 Puerts 腳本

學習了一段時間 U&#xff0c;寫點啥就得等編譯&#xff0c;體驗真的是一言難盡。。。。。。 然后就想著給自己找個腳本好了&#xff0c;調研了一下 AngelScript&#xff0c;puerts 的可行性。 AngelScript 看著真的誘人&#xff0c;但是發現連官方提供的都是 UE 的預編譯版本…

凸包構造算法—Graham 掃描法

1. 理論原理推導 核心思想 Graham 掃描法基于以下基本思想&#xff1a; 極角排序&#xff1a; 選取一個參考點&#xff08;通常選擇 y 坐標最小的點&#xff0c;若存在多個&#xff0c;則選 x 坐標最小的&#xff09;&#xff0c;將其他點按照與該參考點構成的極角進行升序排…

如何在 Windows 上安裝與配置 Tomcat

Apache Tomcat 是一個開源的 Servlet 容器和 Web 服務器&#xff0c;廣泛用于 Java Web 應用的開發和部署。它是實現 Java EE&#xff08;現稱 Jakarta EE&#xff09;規范中的 Servlet 和 JSP 的官方參考實現。在本文中&#xff0c;我們將詳細介紹如何在 Windows 系統上安裝并…

測試模版15

本篇技術博文摘要 &#x1f31f; 引言 &#x1f4d8; 在這個變幻莫測、快速發展的技術時代&#xff0c;與時俱進是每個IT工程師的必修課。我是盛透側視攻城獅&#xff0c;一名什么都會一丟丟的網絡安全工程師&#xff0c;也是眾多技術社區的活躍成員以及多家大廠官方認可人員&a…

攔截、限流,針對場景詳細信息(一)

以下是一個基于Java Spring Boot Redis 的完整限流實現案例&#xff0c;針對同一接口前綴&#xff08;如 /one/ &#xff09;的IP訪問頻率控制&#xff1a; 場景&#xff1a;用戶不用登錄即可訪問接口&#xff0c;網站會有被攻擊的風險 URL&#xff1a;one/two/three one/…

計算機視覺算法實戰——煙霧檢測

?個人主頁歡迎您的訪問 ?期待您的三連 ? ?個人主頁歡迎您的訪問 ?期待您的三連 ? ?個人主頁歡迎您的訪問 ?期待您的三連? ??? ????????? ?? 1. 煙霧檢測領域介紹 煙霧檢測是計算機視覺在公共安全領域的重要應用&#xff0c;它通過分析視頻或圖像序…

MySQL-DCL函數

DCL DCL英文全稱是Data Control Language(數據控制語言)&#xff0c;用來管理數據庫用戶、控制數據庫的訪問權限。 管理用戶 1). 查詢用戶 use mysql; select * from user; select * from mysql.user; 查詢的結果如下: 其中 Host代表當前用戶訪問的主機, 如果為localhost, 僅…

linux 服務器創建服務器啟動后服務自啟動

1、在/etc/systemd/system/下touch一個文件&#xff1a; touch /etc/systemd/system/your_application.service 2、在文件中寫入&#xff1a; [Unit] Descriptionmodules-system Aftersyslog.target[Service] Typeforking Userroot Grouproot ExecStart/bin/bash /usr/loca…

端到端語音識別案例

《DeepSeek大模型高性能核心技術與多模態融合開發&#xff08;人工智能技術叢書&#xff09;》(王曉華)【摘要 書評 試讀】- 京東圖書 語音識別這一技術正如其名&#xff0c;是通過精密地解析說話人的語音來識別并準確轉寫出其所說的內容。它不僅僅是一個簡單的轉錄過程&#…

QT——信號和槽

QT是圖形化界面&#xff0c;自然是需要與用戶進行交互的&#xff0c;但是該如何實現用戶與界面或者程序的交互呢。答案是通過信號和槽。 一&#xff0c;什么是信號和槽&#xff1f; 在Linux操作系統里面&#xff0c;我們知道信號是由硬件或者軟件產生&#xff0c;但是在QT里面…