1.ISELED 介紹
1.1 前言
現(xiàn)在主流的車內(nèi)氛圍燈方案分為兩種,一種是帶自動(dòng)尋址功能的LIN總線方案,代表的芯片如ELMOS的E521.31/E521.36,邁來芯的MLX81106/MLX81108,英迪芯的IND83209/IND83211。一種是使用了ISELED技術(shù)的Smart RGB LED方案(將LED Driver&Controller和LEDs封裝在一起),代表芯片如統(tǒng)明亮的seddLED 3.0系列,弘凱光電的iCLed系列等。兩種方案的對(duì)比如下表:
1.2 ISELED聯(lián)盟
ISELED聯(lián)盟是一個(gè)開放的工業(yè)聯(lián)盟,其目標(biāo)是開發(fā)一個(gè)基于 ISELED 技術(shù)的綜合生態(tài)系統(tǒng)——即用于創(chuàng)新汽車照明的完整系統(tǒng)解決方案。如今,已有多家制造商提供的各種ISELED產(chǎn)品。
從2016年底(ISELED 成立時(shí))最初的5個(gè)成員,聯(lián)盟成員的數(shù)量已增加到 30多家公司和機(jī)構(gòu)。聯(lián)盟成員如下圖,包含LED廠商,MCU廠商,汽車零部件廠商等。
ISELED聯(lián)盟成員
1.3 ISELED產(chǎn)品
ISELED官網(wǎng)的產(chǎn)品分如下幾種:
ISELED系統(tǒng)框圖
以上圖為例,簡(jiǎn)單介紹一下這幾種產(chǎn)品,
- INLC10AQ屬于LED Driver & Controller,主要負(fù)責(zé)通信協(xié)議和驅(qū)動(dòng)LED。目前這部分產(chǎn)品只有Inova能提供
- A3A-FKG-1400-1屬于Smart Digital LEDs,可以認(rèn)為是INLC10AQ和LED的結(jié)合體。目前這部分產(chǎn)品有四家能提供,分別是統(tǒng)明亮、弘凱、億光和歐司朗,做這類產(chǎn)品需要找Inova購(gòu)買LED Driver & Controller然后和自家的LED進(jìn)行結(jié)合,最終變成Smart Digital LEDs。
- S32K屬于ISELED主機(jī)節(jié)點(diǎn)指定的MCU,NXP提供了基于S32K的ISELED驅(qū)動(dòng)庫(kù),客戶使用S32K可以很方便的和Smart Digital LEDs進(jìn)行通信并實(shí)現(xiàn)各種燈效。目前這部分產(chǎn)品主要有兩家能提供,除了NXP還有Microchip。
- ADK屬于應(yīng)用和開發(fā)套件,方便客戶快速評(píng)估ISELED方案。目前能提供ADK的主要是Inova和feno兩家公司。
1.4 ISLED應(yīng)用方向
ISELED目前應(yīng)用方向有三個(gè),分別是:
- AMBIENT LIGHTING,環(huán)境照明,如車內(nèi)靜態(tài)氛圍燈。
- FUNCTIONAL LIGHTING,功能照明,如人手脫離方向盤時(shí)進(jìn)行警示。
- DYNAMIC LIGHTING EFFECTS,動(dòng)態(tài)燈效,如儀表盤的動(dòng)態(tài)背光燈。
2.ISELED Driver獲取及安裝
本篇文章主要介紹基于S32K144控制的ISELED方案試用,所以需要先準(zhǔn)備好S32K1的ISELED軟件驅(qū)動(dòng)。
S32K1xx的官方IDE安裝之后是不帶ISELED驅(qū)動(dòng)的,需要從NXP官網(wǎng)下載對(duì)應(yīng)的exe文件并選擇IDE的安裝目錄進(jìn)行覆蓋安裝,才能使用ISELED功能。
2.1 ISELED Driver獲取
1.瀏覽器中輸入S32K-ISELED LED Lighting Solution^[1] ^的鏈接,并登錄在NXP官網(wǎng)注冊(cè)的個(gè)人賬號(hào),如下圖:
2.點(diǎn)擊 Design Resources ,往下移動(dòng)到 Softeware ,能看到S32K SDK ISELED driver的下載選項(xiàng),如下圖:
3.點(diǎn)擊下載按鈕,在跳轉(zhuǎn)的界面點(diǎn)擊 Previous ,能夠看到RTM 4.0.0版本的ISELED驅(qū)動(dòng):
4.點(diǎn)擊 SW32K1-ISELED-RTM-4.0.0 ,在彈出的協(xié)議界面點(diǎn)擊同意,會(huì)跳轉(zhuǎn)至如下界面,接著點(diǎn)擊S32K1_ISELED_RTM_4.0.0.exe進(jìn)行下載,建議ReleaseNotes也下載一下,里面包含了對(duì)SDK的要求;
5.下載的同時(shí),點(diǎn)擊 License Keys ,會(huì)跳出如下界面;
6.勾選復(fù)選框,點(diǎn)擊Generate,彈出如下界面;
7.點(diǎn)擊Save All按鈕,會(huì)將license文件下載到本地。
2.2 ISELED Driver安裝
2.2.1 安裝前準(zhǔn)備
打開上一章節(jié)提到的 S32K1_ISELED_RTM_4.0.0_ReleaseNotes.pdf ,可以看到ISELED RTM4.0.0的驅(qū)動(dòng)包是和S32K1xx的RTM3.0.0,RTM3.0.1, RTM3.0.2匹配的,所以安裝ISELED驅(qū)動(dòng)之前,先要保證安裝了S32DS For ARM 2.2,這個(gè)開發(fā)環(huán)境自帶的就是S32K1xx的RTM3.0.0版本的SDK。
ISELED ReleaseNotes
2.2.2 安裝注意事項(xiàng)
在S32DS for ARM 2.2安裝好之后,雙擊S32K1_ISELED_RTM_4.0.0.exe進(jìn)行安裝,安裝過程中需要加載之前保存的license文件以及選擇S32DS安裝目錄下的S32K1xx_RTM_3.0.0文件夾,如下面兩張圖:
2.2.3 安裝后檢查
安裝完,可以檢查下S32K1xx_RTM_3.0.0文件夾內(nèi)的相關(guān)文件夾是否有了ISELED相關(guān)的文檔和庫(kù)文件。
3.ISELED方案試用
3.1 Demo方案介紹
由于手上沒有ISELED的ADK,只能利用S32K144開發(fā)板加上之前客戶送的一套ISELED燈板搭建一套演示套件
整體的demo框圖如下所示:
ISELED DEMO 框圖
3.2 編寫Demo程序
3.2.1 圖形化界面配置
1.打開S32DS2.2,新建application工程,命名為 S32K144EVB_ISELED_Demo_Test ,并選擇S32K144_SDK 3.0.0版本。
2.等界面加載完成后,添加ISELED組件,如下圖,和其相關(guān)的其他組件也會(huì)自動(dòng)添加。
3.打開ISELED組件,按下圖配置,相關(guān)參數(shù)后面章節(jié)再詳細(xì)介紹。
4.打開timing_pal組件,使用lpit定時(shí)器的通道0。
5.打開時(shí)鐘組件,使能Flexio時(shí)鐘。
至此,圖形化界面配置結(jié)束。
3.2.2 main函數(shù)編寫
首先是clock,timing,iseled的初始化,如下所示:
int main(void)
{
/* Write your local variable definition here */
testInitType.crcEnable = 1;
testInitType.firstLedAdr = 1;
testInitType.tempCmpEnable = 0;
testInitType.voltSwing = 0;
/*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/
#ifdef PEX_RTOS_INIT
PEX_RTOS_INIT(); /* Initialization of the selected RTOS. Macro is defined by the RTOS component. */
#endif
/*** End of Processor Expert internal initialization. ***/
/* Write your code here */
/* For example: for(;;) { } */
CLOCK_SYS_Init(g_clockManConfigsArr, CLOCK_MANAGER_CONFIG_CNT, g_clockManCallbacksArr, CLOCK_MANAGER_CALLBACK_CNT);
CLOCK_SYS_UpdateConfiguration(0U, CLOCK_MANAGER_POLICY_FORCIBLE);
/*Initialize timing pal instance used by the ISELED Driver for the timeout mechanism*/
TIMING_Init(&timing_pal1_instance, &timing_pal1_InitConfig);
digLED_Init_Interface(NUMBER_OF_INTERFACES, iseled1_InitConfig);
digLED_Init_Strip(&testInitType, &digLEDResultStrip1, strip);
其中,
digLED_ReturnType digLED_Init_Interface(uint8_t nrOfInterfaces, const digLED_ConfigType *configStruct);
主要是進(jìn)行ISELED接口的配置,如選擇Flexio還是SPI,控制多少路ISELED,選用哪些引腳,外設(shè)的超時(shí)時(shí)間,使用中斷還是DMA等。digLED_ReturnType digLED_Init_Strip(const digLED_InitType* ChainInitPtr, digLED_ReadDataResultType* ChainInitResultPtr, uint8_t StripNr);
主要是針對(duì)具體某一路ISELED的通信協(xié)議進(jìn)行配置,如首ISELED的地址,是否進(jìn)行CRC校驗(yàn),差分電壓幅值,是否進(jìn)行相位偏移等。
然后調(diào)用digLED_ReturnType digLED_Set_RGB(uint8_t Red, uint8_t Green, uint8_t Blue, uint16_t Address, uint8_t StripNr);
實(shí)現(xiàn)燈效。其中Red,Green,Blue用于設(shè)置燈顏色的RGB值,Address代表要設(shè)置的ISELED芯片地址(0代表設(shè)置所有ISElED),StripNr代表要設(shè)置第幾路ISELED。
如設(shè)置紅色單顆流水效果的代碼如下:
void RunWaterRed(void)
{
OSIF_TimeDelay(1);
digLED_Set_RGB(0 , 0 , 0 , 0, strip);
OSIF_TimeDelay(1);
uint8_t ledNr;
uint8_t r = 255, g = 0, b = 0;
for(ledNr=1; ledNr<=NUM_OF_LED; ledNr++){
digLED_Set_RGB(r , g , b , ledNr, strip);
OSIF_TimeDelay(100);
digLED_Set_RGB(0 , 0 , 0 , ledNr, strip);
OSIF_TimeDelay(1);
}
}
3.2.3 Demo工程分享
整套工程代碼的鏈接如下:
- 鏈接:https://pan.baidu.com/s/1Bx5gTDurymVcxB1y-SSTwA
- 提取碼:5bkl
3.3 Demo測(cè)試
測(cè)試效果如下(因?yàn)榇笮∠拗?,只剪輯了一部分效果)?/p>
3.4 ISELED組件說明
由于ISELED組件的參數(shù)比較多,如下圖在這里著重說明一下。
ISELED組件參數(shù)
- Interface,選擇ISELED的接口,主要選項(xiàng)有Flexio,LPSPI0,LPSPI1和LPSPI2。
- Strip Number,表示第幾路ISELED,最多可以有13路,其中Strip1到strip10使用Flexio接口,Strip11到Strip13使用LPSPI接口。
- Data Pin和Clock Pin,選擇和第一個(gè)ISELED芯片連接的數(shù)據(jù)引腳以及時(shí)鐘引腳。ISELED芯片直接通過差分總線相連,只有和MCU相連接的ISELED芯片(首地址芯片)走同步信號(hào)。
注意Data Pin和Clock pin不能選擇相同的Logical pins。以下圖為例,選擇PTA10為data pin時(shí),不能選擇PTD0或者PTD9為Clock pin,因?yàn)樗麄兌紝儆贔XIO_D0。
- DMA配置,如果使能了DMA配置,下面的DMA接收、發(fā)送通道以及EDMA組件也需要同步配置。
- callback,回調(diào)函數(shù)設(shè)置,如果填寫了回調(diào)函數(shù)名稱,當(dāng)指令接收、發(fā)送完成,或者發(fā)生超時(shí),CRC error等錯(cuò)誤時(shí),會(huì)調(diào)用該函數(shù)。
- Timer channel,配置iseled調(diào)用的定時(shí)器通道,需要同步在timing_pal進(jìn)行配置。
- timeout duration,配置三種指令的超時(shí)時(shí)間,分別是初始化,讀和ping。
超時(shí)時(shí)間推薦的計(jì)算公式如下(N代表LED數(shù)量,最終計(jì)算結(jié)果的單位為us):
- Interface CLK,顯示選擇的接口的時(shí)鐘來源,注意在clockMan組件使能對(duì)應(yīng)的時(shí)鐘。
- Timer CLK,顯示使用的定時(shí)器的時(shí)鐘來源。
評(píng)論