一、什么是IAP,為什么要IAP
IAP即為In Application Programming(在應(yīng)用中編程),一般情況下,以STM32F10x系列芯片為主控制器的設(shè)備在出廠時(shí)就已經(jīng)使用J-Link仿真器將應(yīng)用代碼燒錄了,如果在設(shè)備使用過程中需要進(jìn)行應(yīng)用代碼的更換、升級(jí)等操作的話,則可能需要將設(shè)備返回原廠并拆解出來再使用J-Link重新燒錄代碼,這就增加了很多不必要的麻煩。站在用戶的角度來說,就是能讓用戶自己來更換設(shè)備里邊的代碼程序而廠家這邊只需要提供給用戶一個(gè)代碼文件即可。
而IAP卻能很好的解決掉這個(gè)難題,一片STM32芯片的Code(代碼)區(qū)內(nèi)一般只有一個(gè)用戶程序。而IAP方案則是將代碼區(qū)劃分為兩部分,兩部分區(qū)域各存放一個(gè)程序,一個(gè)叫bootloader(引導(dǎo)加載程序),另一個(gè)較user application(用戶應(yīng)用程序)。bootloader在出廠時(shí)就固定下來了,在需要變更user application時(shí)只需要通過觸發(fā)bootloader對(duì)userapplication的擦除和重新寫入即可完成用戶應(yīng)用的更換。如圖1-1所示
圖 1-1
在程序執(zhí)行初始進(jìn)入bootloader,在bootloader里面檢測(cè)條件是否被觸發(fā)(可通過按鍵是否被按下、串口是否接收到特定的數(shù)據(jù)、U盤是否插入等等),如果有則進(jìn)行對(duì)user application進(jìn)行擦除和重新寫入操作,如果沒有則直接跳轉(zhuǎn)到user application執(zhí)行應(yīng)用;如果有則進(jìn)行擦除用戶代碼并重新寫入新的用戶代碼。
二、STM32F103ZET6硬件條件
STM32F103ZET6的啟動(dòng)方式有三種:內(nèi)置FLASH啟動(dòng)、內(nèi)置SRAM啟動(dòng)、系統(tǒng)存儲(chǔ)器ROM啟動(dòng),通過BOOT0和BOOT1引腳的設(shè)置可以選擇從哪中方式啟動(dòng),這里選擇內(nèi)置的FLASH啟動(dòng)。其FLASH的地址為0x08000000—0x0807ffff,共512KB,這些都能從芯片數(shù)據(jù)手冊(cè)中直接得到。而這里首要的一個(gè)問題是中斷的問題。正常情況下發(fā)生中斷的過程為:發(fā)生中斷(中斷請(qǐng)求)à到中斷向量表查找中斷函數(shù)入口地址à跳轉(zhuǎn)到中斷函數(shù)à執(zhí)行中斷函數(shù)à中斷返回。也就是說在STM32的內(nèi)置的Flash中有一個(gè)中斷向量表來存放各個(gè)中斷服務(wù)函數(shù)的入口地址,內(nèi)置Flash的分配情況大致如下圖2-1。
圖2-1
在只有一個(gè)程序的情況下,程序執(zhí)行的走向應(yīng)該如圖2-2所示(借用網(wǎng)友的原圖)。
圖2-2
STM32F10x有一個(gè)中斷向量表,這個(gè)中斷向量表存放在代碼開始部分的后4個(gè)字節(jié)處(即0x08000004),代碼開始的4個(gè)字節(jié)存放的是堆棧棧頂?shù)牡刂罚?dāng)發(fā)生中斷后程序通過查找該表得到相應(yīng)的中斷服務(wù)程序入口地址,然后再跳到相應(yīng)的中斷服務(wù)程序中執(zhí)行。上電后從0x08000004處取出復(fù)位中斷向量的地址,然后跳轉(zhuǎn)到復(fù)位中斷程序的入口(標(biāo)號(hào)①所示),執(zhí)行結(jié)束后跳轉(zhuǎn)到main函數(shù)中(標(biāo)號(hào)②所示)。在執(zhí)行main函數(shù)的過程中發(fā)生中斷,則STM32強(qiáng)制將PC指針指回中斷向量表處(標(biāo)號(hào)③所示),從中斷向量表中找到相應(yīng)的中斷函數(shù)入口地址,跳轉(zhuǎn)到相應(yīng)的中斷服務(wù)函數(shù)(標(biāo)號(hào)④所示),執(zhí)行完中斷函數(shù)后再返回到main函數(shù)中來(標(biāo)號(hào)⑤所示)。
若在STM32F103x中使用IAP方案,則內(nèi)置的Flash分配情況大致如下圖2-3。
圖2-3
在內(nèi)置的Flash里面添加一個(gè)BootLoader程序,BootLoader程序和userapplication各有一個(gè)中斷向量表,假設(shè)BootLoader程序占用的空間為N+M字節(jié),則程序的走向應(yīng)該如圖2-2所示(借用網(wǎng)友的原圖并做改動(dòng),其中虛線部分為原圖步驟④⑤的走向,本人改為指向灰色部分)。
圖2-2
上電初始程序依然從0x08000004處取出復(fù)位中斷向量地址,執(zhí)行復(fù)位中斷函數(shù)后跳轉(zhuǎn)到IAP的main(標(biāo)號(hào)①所示),在IAP的main函數(shù)執(zhí)行完成后強(qiáng)制跳轉(zhuǎn)到0x08000004+N+M處(標(biāo)號(hào)②所示),最后跳轉(zhuǎn)到新的main函數(shù)中來(標(biāo)號(hào)③所示),當(dāng)發(fā)生中斷請(qǐng)求后,程序跳轉(zhuǎn)到新的中斷向量表中取出新的中斷函數(shù)入口地址,再跳轉(zhuǎn)到新的中斷服務(wù)函數(shù)中執(zhí)行(標(biāo)號(hào)④⑤所示),執(zhí)行完中斷函數(shù)后再返回到main函數(shù)中來(標(biāo)號(hào)⑥所示)。
對(duì)于步驟④⑤,網(wǎng)友認(rèn)為是:“在main執(zhí)行的過程中,如果CPU得到一個(gè)中斷請(qǐng)求,PC指針仍強(qiáng)制跳轉(zhuǎn)到地址0x08000004中斷向量表處,而不是新的中斷向量表,如圖標(biāo)號(hào)④所示,程序再根據(jù)我們?cè)O(shè)置的中斷向量表偏移量,跳轉(zhuǎn)到對(duì)應(yīng)中斷源新的中斷服務(wù)程序中,如圖標(biāo)號(hào)⑤所示”。我對(duì)此的理解是:“當(dāng)發(fā)生中斷后,程序從0x08000004(舊)處的中斷向量表中得到相應(yīng)的中斷服務(wù)函數(shù)入口地址,繼而跳轉(zhuǎn)到相應(yīng)的中斷服務(wù)程序”。但是舊的中斷向量列表里邊存放的是IAP程序中斷函數(shù)的入口地址,它是如何得到user程序中斷函數(shù)的入口地址呢?所以我覺得此種說法是錯(cuò)誤的。“當(dāng)發(fā)生中斷時(shí)PC指針強(qiáng)制會(huì)跳轉(zhuǎn)到0x08000004處”這種說法并沒有錯(cuò),只是忽略了后續(xù)的一些知識(shí)要點(diǎn)而導(dǎo)致這個(gè)說法出現(xiàn)矛盾。
對(duì)于步驟④⑤我認(rèn)為的是,在main函數(shù)的執(zhí)行過程中,如果CPU得到一個(gè)中斷請(qǐng)求,PC指針本來應(yīng)該跳轉(zhuǎn)到0x08000004處的中斷向量表,由于我們?cè)O(shè)置了中斷向量表偏移量為N+M,因此PC指針被強(qiáng)制跳轉(zhuǎn)到0x08000004+N+M處的中斷向量表中得到相應(yīng)的中斷函數(shù)地址(待求證),再跳轉(zhuǎn)到相應(yīng)新的中斷服務(wù)函數(shù),執(zhí)行結(jié)束后返回到main函數(shù)中來。
三、實(shí)現(xiàn)過程
STM32F103ZET6的Flash地址為0x08000000—0x0807ffff共512KB,把這512KB的空間分為兩塊,第一塊大小為32KB存放BootLoader程序,剩余的空間存放用戶程序(根據(jù)實(shí)際情況分配這兩塊空間的大小,BootLoader程序占用的空間越小越好,則BootLoader地址為0x08000000—0x08007fff,用戶程序地址為0x08008000—0x0807ffff。BootLoader流程圖大致應(yīng)該如下:
1、初始化時(shí)鐘。
2、初始化中斷向量表地址。
3、初始化按鍵。(使用按鍵觸發(fā)方式,上電時(shí)如果按鍵被按下則進(jìn)行用戶程序更新操作)
4、初始化串口。
5、檢測(cè)按鍵是否被按下,是則執(zhí)行步驟6,否則執(zhí)行步驟10。
6、擦除用戶程序(擦除0x08008000—0x0807ffff地址空間Flash)。
7、從串口讀取新的用戶代碼數(shù)據(jù),把代碼寫入用戶程序空間。
8、檢測(cè)串口數(shù)據(jù)接收完畢?是則執(zhí)行步驟9,否則跳回步驟7。
9、用戶程序更新完畢,等待重新上電或硬件復(fù)位。
10、跳轉(zhuǎn)到用戶程序(強(qiáng)制將PC指針跳轉(zhuǎn)到0x08008000+4處)。
到這里首先要解決的問題就有:
1、如何進(jìn)行對(duì)STM32的Flash進(jìn)行擦除和寫入操作。
2、中斷向量表偏移如何設(shè)置。
3、如何改變代碼存放的地址空間(因?yàn)锽ootLoader要存放在0x08000000處,用戶程序要存放在0x08008000處,而默認(rèn)的代碼存放的地址空間為0x08000000)。
4、怎么進(jìn)行PC指針的強(qiáng)制跳轉(zhuǎn),跳轉(zhuǎn)時(shí)需要做些什么。
5、串口接收的用戶代碼數(shù)據(jù)是什么樣的代碼數(shù)據(jù),是一種什么樣的文件。
問題的解決:
1、使用STM32的固件庫函數(shù),只需調(diào)用幾個(gè)庫函數(shù)即可輕松解決,使用的固件庫為stm32f10x_flash.c文件,對(duì)Flash的操作過程簡(jiǎn)要為:Flash解鎖àFlash擦除àFlash寫入àFlash上鎖。(對(duì)Flash編程的更詳細(xì)操作參考STM32F10xxx閃存編程手冊(cè))
①解鎖:
FLASH_Unlock();//解鎖Flash
FLASH_SetLatency(FLASH_Latency_2);//因?yàn)橄到y(tǒng)時(shí)鐘為72M所以要設(shè)置兩個(gè)時(shí)鐘周期的延時(shí)
②擦除:
for(i=0;i<240;i++)
{
if(FLASH_ErasePage(FLASH_ADDR+i*2048)!= FLASH_COMPLETE)//一定要判斷是否擦除成功
returnERROR;
}
說明:FLASH_ErasePage(uint32_t Page_Address)即為Flash擦除操作,按頁擦除,每頁2KB,Page_Address為頁的起始地址,如0x08000000是第一頁起始地址,0x08000800為第二頁起始地址,這里的操作擦除了0x08008000—0x0807ffff地址空間的Flash。
③寫入:
unsignedchar buf[1024];//假設(shè)待寫入的代碼數(shù)據(jù)
unsigned short temp;//臨時(shí)數(shù)據(jù)
for(i=0;i<512;i++)
{
temp = (buf[2*i+1]<<8) | buf[2*i];//2個(gè)字節(jié)整合為1個(gè)半字
if(FLASH_ProgramHalfWord(ADDR,temp) != FLASH_COMPLETE)//判斷是否寫入成功
{
Return ERROR;
}
ADDR +=2;//地址要加2,因?yàn)槊看螌懭氲氖?個(gè)字節(jié)(1個(gè)半字)
}
說明:因?yàn)镾TM32的Flash寫入為雙字節(jié)(1個(gè)半字)寫入,F(xiàn)LASH_ProgramHalfWord(uint32_t Address, uint16_t Data)函數(shù)即為對(duì)地址為Address寫入1個(gè)半字的Data,每次寫入完成后地址要加2。
④上鎖:
FLASH_Lock();//Flash上鎖,一個(gè)固件庫函數(shù)即可實(shí)現(xiàn)。
2、關(guān)于中斷向量表的偏移設(shè)置,對(duì)于BootLoader程序只需設(shè)置中斷向量表的指向在0x08000000處,對(duì)于用戶程序需要設(shè)置中斷向量表的指向在0x08008000處即可。
①在BootLoader程序的中斷向量表指向設(shè)置中應(yīng)有這么一句:
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);//設(shè)置中斷向量表指向
其中NVIC_VectTab_FLASH是個(gè)宏定義,的值為0x08000000。
②在用戶程序的中斷向量表指向設(shè)置用應(yīng)有這么一句:
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x8000);//設(shè)置中斷向量表指向
3、確認(rèn)代碼存放的地址空間,在IAR和在Keil中的設(shè)置是不同的,網(wǎng)上有在Keil中設(shè)置的方法,設(shè)立介紹在IAR軟件環(huán)境下的設(shè)置方法。
①在固件庫目錄STM32F10x_StdPeriph_Lib_V3.5.0ProjectSTM32F10x_StdPeriph_TemplateEWARM下找到一個(gè)stm32f10x_flash.icf文件,將其復(fù)制到工程目錄中來,在打開IAR工程,將配置文件添加到工程中,如下圖3-2所示
圖3-1
②在工程中打開stm32f10x_flash.icf該文件,修改兩個(gè)參數(shù)即可改變代碼存放的地址空間,圖下圖3-2所示。
圖3-2
4、關(guān)于PC指針的強(qiáng)制跳轉(zhuǎn),想在BootLoader程序中將PC指針跳轉(zhuǎn)到用戶代碼處,可選擇下面的操作
typedefvoid (*pFunction)(void);
pFunctionJump_To_Application;
uint32_tJumpAddress;
#defineApplicationAddress0x08008000
if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)//--------①
{
JumpAddress= *(__IO uint32_t*) (ApplicationAddress + 4);//--------②
Jump_To_Application= (pFunction) JumpAddress;//--------③
__set_MSP(*(__IOuint32_t*) ApplicationAddress);//--------④
Jump_To_Application();//--------⑤
}
①因?yàn)橛脩舫绦蜷_始位置(0x08008000處)的前4個(gè)字節(jié)存放的是堆棧的地址,堆棧地址必定是指向RAM空間的,而STM32的RAM空間起始地址為0x20000000,所以要進(jìn)行判斷。
②程序跳轉(zhuǎn)地址的確認(rèn),前面已經(jīng)說過0x08008004處的4個(gè)字節(jié)存放的是復(fù)位函數(shù)的入口地址,該句的意思為獲得(ApplicationAddress + 4)地址處的數(shù)據(jù),即為獲得新的復(fù)位函數(shù)入口地址。
③令Jump_To_Application這個(gè)函數(shù)指針指向復(fù)位函數(shù)入口地址。
④堆棧的初始化,重新設(shè)定棧頂代地址,把棧頂?shù)刂吩O(shè)置為用戶代碼指向的棧頂?shù)刂贰?p>
⑤跳轉(zhuǎn)到新的復(fù)位函數(shù)。
5、通過串口來接收代碼數(shù)據(jù),就是PC機(jī)通過串口將代碼數(shù)據(jù)發(fā)送到STM32中去。這里就涉及到兩個(gè)問題:
①數(shù)據(jù)怎么得來。
②數(shù)據(jù)傳輸?shù)倪^程需要遵循的協(xié)議,什么時(shí)候開始,什么時(shí)候結(jié)束。
解決①:一般我們就將*.hex文件使用JFlash-ARM打開再通過Jlink仿真器燒錄到STM32芯片中,但是*.hex文件里邊包含的數(shù)據(jù)不純粹是代碼數(shù)據(jù)還有一些別的東西,而*.bin文件數(shù)據(jù)就全部是代碼數(shù)據(jù)。
在IAR軟件環(huán)境中打開一個(gè)用戶工程,先設(shè)置好中斷向量表偏移和代碼存放的地址空間后(前面已介紹過這兩種方法)。設(shè)置工程如下圖3-3所示,確認(rèn)后重新編譯工程,在工程的DebugExe目錄下會(huì)相應(yīng)生成一個(gè)xxx.bin文件,這就是所需要的代碼文件。
圖3-3
②數(shù)據(jù)通過串口來傳輸文件常用的協(xié)議有XModem、YModem、ZModem這三種協(xié)議,在PC端使用這些協(xié)議傳輸文件只需要PC的超級(jí)終端或者終端工具SecureCRT即可,但是在STM32這邊的編程會(huì)增加一些困難(因?yàn)橐热プx懂、解析這些協(xié)議,在通過編程來實(shí)現(xiàn))。也可選擇自己定義一套簡(jiǎn)單的傳輸協(xié)議,但同樣會(huì)有一些困難(因?yàn)橐赑C端進(jìn)行文件和串口編程)。總之不管通過什么辦法都行,只要能將xxx.bin文件數(shù)據(jù)通過串口全部發(fā)送到STM32并且STM32能夠全部接收到這些數(shù)據(jù)并寫入Flash即可(我選擇后者,自定義傳輸協(xié)議并用VC進(jìn)行文件和串口編程)。
四、結(jié)束語
總的來說STM32的IAP方案實(shí)現(xiàn)需要在進(jìn)行用戶程序之前加一段Bootloader程序,BootLoader程序的作用就是:
①什么都不做,直接跳轉(zhuǎn)到用戶程序。
②刪除原有的用戶程序,讀取*.bin文件數(shù)據(jù)并將數(shù)據(jù)重新寫入新的用戶程序。
對(duì)于用戶程序相比普通的編程只需要做三步改動(dòng)即可
①改變中斷向量表。
②改變代碼存放的地址空間
③修改生成*.bin文件
使用通過UART的IAP方案并不是很好的選擇,這只是IAP方案的一個(gè)機(jī)制,因?yàn)槟苁褂肞C機(jī)通過串口升級(jí)程序,同樣能通過Jlink燒寫程序,并且自定義的串口通訊協(xié)議在沒有校CRC校驗(yàn)的情況下不能及時(shí)發(fā)現(xiàn)數(shù)據(jù)傳輸過程發(fā)生的錯(cuò)誤。這里推薦使用SD卡(或U盤)進(jìn)行用戶程序更新,將*.bin文件復(fù)制到SD卡(或U盤)中,STM32再通過讀取SD卡(或U盤)的*.bin文件進(jìn)行用戶程序更新,這也避免了STM32與PC笨重的通訊,只需插一個(gè)SD卡(或U盤)更顯得人性化一些,但需要去弄懂STM32如何與SD卡(或U盤)的通訊。
上一篇:STM32 PWM 輸出
下一篇:基于STM32 MCU的太陽能:LED街燈解決方案
推薦閱讀
史海拾趣
Hanghsing Enterprise Co., Ltd. 的五個(gè)發(fā)展故事
故事一:初創(chuàng)與起步
Hanghsing Enterprise Co., Ltd.(以下簡(jiǎn)稱“Hanghsing”)成立于臺(tái)灣,起初是一家專注于精密零部件制造的小型公司。公司位于No. 1, Lane 39, Seuwe St., Tali City, Taichung Hsien, Taiwan 412,憑借對(duì)品質(zhì)的不懈追求和對(duì)市場(chǎng)的敏銳洞察,Hanghsing逐漸在行業(yè)內(nèi)嶄露頭角。公司初期主要生產(chǎn)Valve Shafts、Nuts、Screws等精密不銹鋼部件,這些產(chǎn)品廣泛應(yīng)用于電子、機(jī)械等多個(gè)領(lǐng)域。通過不斷優(yōu)化生產(chǎn)工藝和質(zhì)量控制體系,Hanghsing逐漸建立了良好的市場(chǎng)口碑。
故事二:技術(shù)突破與產(chǎn)品升級(jí)
隨著電子行業(yè)的快速發(fā)展,Hanghsing意識(shí)到技術(shù)創(chuàng)新的重要性。公司加大了對(duì)研發(fā)的投入,引進(jìn)了一批高素質(zhì)的技術(shù)人才,致力于新產(chǎn)品的開發(fā)和現(xiàn)有產(chǎn)品的升級(jí)。經(jīng)過不懈努力,Hanghsing成功推出了一系列高精度、高可靠性的電子產(chǎn)品零部件,如Sleeve Barrels、Toggles和Mandrels等。這些產(chǎn)品不僅滿足了市場(chǎng)對(duì)高品質(zhì)零部件的需求,還進(jìn)一步鞏固了公司在電子行業(yè)供應(yīng)鏈中的地位。
故事三:市場(chǎng)拓展與國(guó)際合作
隨著產(chǎn)品質(zhì)量的不斷提升和市場(chǎng)份額的逐步擴(kuò)大,Hanghsing開始將目光投向國(guó)際市場(chǎng)。公司積極參加各類國(guó)際展會(huì),與全球知名電子企業(yè)建立合作關(guān)系,將產(chǎn)品銷往世界各地。同時(shí),Hanghsing還注重與國(guó)際技術(shù)標(biāo)準(zhǔn)的接軌,確保產(chǎn)品符合國(guó)際市場(chǎng)的嚴(yán)格要求。通過不斷的市場(chǎng)拓展和國(guó)際合作,Hanghsing在國(guó)際上的知名度和影響力得到了顯著提升。
故事四:產(chǎn)業(yè)升級(jí)與多元化發(fā)展
面對(duì)電子行業(yè)的快速發(fā)展和市場(chǎng)競(jìng)爭(zhēng)的日益激烈,Hanghsing積極尋求產(chǎn)業(yè)升級(jí)和多元化發(fā)展的路徑。公司開始涉足電子元器件的制造和研發(fā)領(lǐng)域,通過引進(jìn)先進(jìn)的生產(chǎn)設(shè)備和工藝技術(shù),不斷提升產(chǎn)品的附加值和市場(chǎng)競(jìng)爭(zhēng)力。同時(shí),Hanghsing還積極拓展上下游產(chǎn)業(yè)鏈,與原材料供應(yīng)商和終端客戶建立緊密的合作關(guān)系,形成了完整的產(chǎn)業(yè)生態(tài)體系。
故事五:綠色生產(chǎn)與可持續(xù)發(fā)展
在追求經(jīng)濟(jì)效益的同時(shí),Hanghsing始終不忘履行社會(huì)責(zé)任。公司積極響應(yīng)國(guó)家環(huán)保政策,致力于綠色生產(chǎn)和可持續(xù)發(fā)展。通過引進(jìn)環(huán)保設(shè)備和工藝技術(shù),減少生產(chǎn)過程中的污染物排放和資源消耗。同時(shí),Hanghsing還加強(qiáng)了對(duì)員工的環(huán)保教育和培訓(xùn),提高員工的環(huán)保意識(shí)和責(zé)任感。這些舉措不僅有助于提升公司的社會(huì)形象和市場(chǎng)競(jìng)爭(zhēng)力,還為推動(dòng)電子行業(yè)的綠色發(fā)展做出了積極貢獻(xiàn)。
隨著業(yè)務(wù)的不斷擴(kuò)展,F(xiàn)INISAR開始在全球范圍內(nèi)布局。公司在中國(guó)、馬來西亞、美國(guó)、澳大利亞、以色列、新加坡、印度、韓國(guó)等多個(gè)國(guó)家設(shè)立了子公司和研發(fā)中心,形成了全球化的生產(chǎn)和服務(wù)網(wǎng)絡(luò)。這一戰(zhàn)略布局不僅增強(qiáng)了FINISAR的市場(chǎng)競(jìng)爭(zhēng)力,還為公司帶來了更多的發(fā)展機(jī)遇。特別是在中國(guó)市場(chǎng),F(xiàn)INISAR憑借其先進(jìn)的技術(shù)和優(yōu)質(zhì)的產(chǎn)品,贏得了眾多知名企業(yè)的青睞,如思科、IBM、華為等。
FINISAR在光模塊領(lǐng)域取得了多項(xiàng)重要技術(shù)創(chuàng)新和突破。例如,公司在1992年推出了首個(gè)850nm的千兆多模光纖光收發(fā)模塊,隨后在1995年推出了帶數(shù)字診斷功能的光收發(fā)模塊,這些創(chuàng)新產(chǎn)品極大地推動(dòng)了光通信技術(shù)的發(fā)展。此外,F(xiàn)INISAR還不斷推出新產(chǎn)品以滿足市場(chǎng)需求,如SFP光模塊、CWDM GBIC光模塊等,這些產(chǎn)品均獲得了市場(chǎng)的廣泛認(rèn)可。
在產(chǎn)品質(zhì)量和技術(shù)水平得到認(rèn)可后,南晶電子開始積極拓展市場(chǎng)。公司參加了多場(chǎng)國(guó)內(nèi)外電子展會(huì),與眾多客戶建立了合作關(guān)系。同時(shí),南晶電子還加大了營(yíng)銷力度,通過線上線下相結(jié)合的方式,提高了品牌知名度和市場(chǎng)占有率。在短短幾年內(nèi),公司實(shí)現(xiàn)了從國(guó)內(nèi)市場(chǎng)到國(guó)際市場(chǎng)的跨越式發(fā)展。
世紀(jì)金光(CENGOL)公司自創(chuàng)立之初,就立志要在半導(dǎo)體領(lǐng)域?qū)崿F(xiàn)自主創(chuàng)新。經(jīng)過無數(shù)次的實(shí)驗(yàn)與嘗試,公司的研發(fā)團(tuán)隊(duì)成功攻克了高純碳化硅粉料提純技術(shù)。這一突破不僅使世紀(jì)金光在碳化硅材料領(lǐng)域取得了領(lǐng)先地位,更為后續(xù)產(chǎn)品的研發(fā)奠定了堅(jiān)實(shí)基礎(chǔ)。隨著技術(shù)的不斷完善,世紀(jì)金光成功推出了6英寸碳化硅單晶,并實(shí)現(xiàn)了量產(chǎn),這一成就標(biāo)志著公司在碳化硅材料領(lǐng)域取得了重要進(jìn)展。
在電子行業(yè)競(jìng)爭(zhēng)日益激烈的背景下,安普康深知?jiǎng)?chuàng)新是企業(yè)發(fā)展的核心動(dòng)力。因此,公司始終將研發(fā)投入作為重要戰(zhàn)略之一。通過引進(jìn)先進(jìn)的生產(chǎn)設(shè)備和技術(shù),安普康不斷提升產(chǎn)品的品質(zhì)和性能。同時(shí),公司還積極與國(guó)內(nèi)外知名企業(yè)和研究機(jī)構(gòu)合作,共同開展技術(shù)研發(fā)和創(chuàng)新。這些努力使得安普康在光纖產(chǎn)品、布線產(chǎn)品等領(lǐng)域取得了多項(xiàng)專利,并成功推出了一系列具有市場(chǎng)競(jìng)爭(zhēng)力的新產(chǎn)品。
我用timer1產(chǎn)生一個(gè)PWM波形,利用捕獲單元4(用T3作時(shí)基)捕獲這個(gè)PWM,并將捕獲值存入另一個(gè)數(shù)組。那么我在板子上實(shí)現(xiàn)的時(shí)候,是不是需要將芯片上的T1pwm引腳接到捕獲單元4的cap4引腳上呢?如果不需要,請(qǐng)教一下原因…… 謝謝!… 查看全部問答∨ |
嵌入式數(shù)字多媒體終端硬件平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn) 隨著信息時(shí)代的到來,信息技術(shù)尤其是計(jì)算機(jī)多媒體技術(shù)與網(wǎng)絡(luò)技術(shù)飛速發(fā)展,語音教室在各種學(xué) 校都已有了廣泛的應(yīng)用。現(xiàn)存的語音教學(xué)系統(tǒng)一般都是采用模擬電路,可靠性低,抗干擾性弱,易發(fā)生 串音,從而在傳輸過程中會(huì)失真、衰減,且易受干擾, ...… 查看全部問答∨ |
我做了20個(gè)1820采集的系統(tǒng) 每個(gè)探頭都是10m長(zhǎng) 上拉4.7k的電阻后發(fā)現(xiàn)5v根本驅(qū)動(dòng)不了 輸出的都是0 一直調(diào)到了7v多才正確輸出,可是只能穩(wěn)定工作30分鐘這樣,30分鐘后就全是ffff,看了網(wǎng)上很多資料 感覺似乎是驅(qū)動(dòng)問題 想問下有人有做過類 ...… 查看全部問答∨ |
醫(yī)改方案出臺(tái)預(yù)示中國(guó)改革分水嶺 本帖最后由 jameswangsynnex 于 2015-3-3 19:57 編輯 2009-4-8 南方都市報(bào) 新京報(bào) 4月7日推出的《醫(yī)藥衛(wèi)生體制改革近期重點(diǎn)實(shí)施方案(2009年-2011年)》,標(biāo)志著具有里程碑意義的醫(yī)療改革方案正式出臺(tái)。歷經(jīng)數(shù)年改革向何處去的全民大討論,在 ...… 查看全部問答∨ |
半橋驅(qū)動(dòng)芯片組成的驅(qū)動(dòng)電路 半橋驅(qū)動(dòng)芯片組成的驅(qū)動(dòng)電路如圖4所示,工作原理如下: A.當(dāng)HS和LS同時(shí)為高電平時(shí),HO有驅(qū)動(dòng)電壓輸出,使Q1開通。當(dāng)HS和LS同時(shí)為低電平時(shí),LO有驅(qū)動(dòng)電壓輸出,使Q2開通。 B.電容C2與分立器件驅(qū)動(dòng)電路里的C4作用相 ...… 查看全部問答∨ |
|
大量單片機(jī)資料下載(收集了幾年的東西)(里面絕對(duì)有你想找的) 大量單片機(jī)資料下載 廢話不多說 上資料 1.KEIL入門學(xué)習(xí)的好資料 [ 本帖最后由 melodyooo 于 2010-3-19 16:38 編輯 ]… 查看全部問答∨ |
在網(wǎng)上找的圖,怎么達(dá)不到預(yù)期效果? 附圖是我在網(wǎng)上找的圖,按照?qǐng)D做電路,不能達(dá)到預(yù)期效果,有做過的嗎?請(qǐng)求怎么解決這個(gè)問題,照這個(gè)圖搭完電路,3腳輸出高電平,為什么?求解 文章介紹如下: 555定時(shí)器在這里接成單穩(wěn)態(tài)電路。平時(shí)由于 ...… 查看全部問答∨ |
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 英飛凌微控制器:以全新實(shí)惠套件和強(qiáng)大開發(fā)環(huán)境為開發(fā)者提供支持
- iTOP-i.MX6開發(fā)板設(shè)備數(shù)驅(qū)動(dòng)Menuconfig的用法
- 迅為IMX6ULL開發(fā)板Qt for Android搭建開發(fā)環(huán)境
- 迅為i.MX8M mini開發(fā)板Windots QT系統(tǒng)開發(fā)環(huán)境搭建
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)使用Gstarwmra(一)
- 迅為IMX8M mini開發(fā)板Linix系統(tǒng)修改默認(rèn)屏幕
- iTOP-4412開發(fā)板支持4G以上文件系統(tǒng)擴(kuò)展
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)設(shè)置開機(jī)自啟動(dòng)
- 迅為IMX6Q開發(fā)板 Buildroot文件系統(tǒng)mqtt測(cè)試
- 汽車電子芯片國(guó)產(chǎn)化加速,GS32-DSP能否替代C2000?
- 機(jī)器人行業(yè)大魚:ABB機(jī)器人業(yè)務(wù)分拆上市
- 全球首個(gè)L3級(jí)架構(gòu)誕生在中國(guó),意味著什么?
- 汽車存儲(chǔ)芯片研究:大模型推動(dòng)下,主機(jī)廠車用存儲(chǔ)芯片的選擇路徑分析
- 智駕按下急停鍵?正相反,真正的自動(dòng)駕駛就要來了!
- 國(guó)內(nèi)5個(gè)固態(tài)電池項(xiàng)目更新動(dòng)態(tài)
- 機(jī)器人如何防止碰撞?——安全探測(cè)器的技術(shù)架構(gòu)與性能突破
- 自動(dòng)駕駛汽車功能安全與網(wǎng)絡(luò)安全的融合
- 車企虛假宣傳最高判刑2年!智駕、接管成禁用詞?重拳出擊砸向誰?
- 強(qiáng)監(jiān)管下的智能汽車:新規(guī)詳解
- 老T叔的藏書閣——一位老工程師多年的資料積累
- ADI有獎(jiǎng)下載活動(dòng)之25:ADI汽車傳感器和傳感器接口解決方案
- 有獎(jiǎng)國(guó)產(chǎn)芯直播:先楫800MHz RISC-V MCU高能秀,豈止控4只伺服電機(jī),干貨多多
- 【歡樂新年精彩共享】?jī)?yōu)秀主題/回復(fù)活動(dòng)第19期如期到來啦~~
- 想要Get更好的服務(wù)?TE人工客服說:“我可以”
- 【樓層接力】電阻你問我答!
- 有獎(jiǎng)直播|恩智浦嵌入式人機(jī)界面解決方案詳解
- 有獎(jiǎng)直播:如何使用英飛凌IGBT7設(shè)計(jì)高性能伺服驅(qū)動(dòng)
- 電源控制芯片的外置MOS管調(diào)整電路
- 異步FIFO結(jié)構(gòu)及FPGA設(shè)計(jì)
- 51單片機(jī)之keil下載問題
- Vivado工程源碼大瘦身
- 2011如何設(shè)計(jì)小信號(hào)諧振放大討論
- 【轉(zhuǎn)帖】一文讀懂光柵式傳感器
- 請(qǐng)DX指導(dǎo)一二:NMAKE : U1073: don't know how to make SC2440_SDHCBase.lib
- 最近閑來無事,調(diào)試了一下時(shí)鐘芯片DS1302程序,挺好使
- 至2020年全球互聯(lián)終端達(dá)330億部
- 最后一天!有獎(jiǎng)直播—TE Connectivity的智能建筑解決方案