———————————————零、开场白———————————————
寶峰K6是最近推出的面嚮業餘無綫電群體的一款對講機產品,體積小巧,經濟實惠,可玩性強。
該機使用的MCU型號為KD32F328,128KB Flash,24KB SRAM,相比於友商全盛K5系列的DP32G030(64KB Flash)增加了諸多可玩性。
目前這款KD32F328無任何資料,無任何技術支持,開發略有難度。
———————————————1.原廠資料———————————————
寫頻軟件下載:
原廠固件下載:
固件升級軟件下載:
對講機原理圖下載:
———————————————2.開始開發———————————————
KD32F328是一款Cortex-M0内核的單片機產品,產品Datasheet手冊如下:
液晶顯示屏Datasheet手冊如下:
寶峰K6的MCU已含有Bootloder,大家可使用電腦在綫升級固件(以下簡稱APP部分)。這個帖子將教授大家如何開發應用部分的程序。
難點:
1、Bootloder的範圍是0x0-0x2000(即8K),APP部分範圍從0x2000開始,容量120K,所以應用程序部分需要修改Flash起始地址(0x2000)和中斷向量的偏移地址。
但是Cortex-M0内核的MCU產品,設置中斷向量的偏移地址比M3内核的MCU複雜很多(這裏感謝BD4VOW提供的技術支持)。
定義絕對地址類型的數組UserVectors,存儲指向中斷服務函數名的指針。
typedef struct
{
void (*intHandle)(void);
}STR_INTFUN;
__IO STR_INTFUN UserVectors[10] __attribute__((at(0x20001000)));
在初始化階段,將中斷服務函數名賦值到UserVectors數組中。
UserVectors[0].intHandle = SysTickHandler;
UserVectors[1].intHandle = USART1_Handler;
UserVectors[3].intHandle = DMA1Int_Handler;
在系統中斷服務程序中,調用 UserVectors中指向的回調函數指針即可。
void SysTick_Handler(void)
{
UserVectors[0].intHandle();
}
void USART1_IRQHandler(void)
{
UserVectors[1].intHandle();
}
void DMA1_Channel4_5_IRQHandler(void)
{
UserVectors[3].intHandle();
}
避坑指南:
如果不設置Flash起始地址會怎樣?答:開機不亮屏,但不影響按側邊兩按鍵進入BootLoader。如果不設置中斷向量的偏移地址會怎樣?答:開機不亮屏,按側邊兩按鍵BootLoader無法進入,這裏必須拔出寫頻綫,拆除電池,並重新安裝才能繼續進入BootLoader。 ———————————————3.目前的源程序下載———————————————
源程序下載:
(這裏感謝BD4VOW提供的技術支持)
———————————————四、源程序如何編譯———————————————
作者感覺,玩業餘無綫電的,更多的是年齡偏大的群體,大家或許更習慣經典的集成開發環境,例如IAR、MDK等等。
作爲開源項目,就不能使用這種商業軟件了(這也解釋了大家在github上面下載的單片機類源程序多爲GCC下編譯的)。
在這裏,作者推薦Visual Studio Code + PlatformIO IDE的開發環境(可能新手搭建這個開發環境會遇到諸多困難,走一些彎路)。
1、安裝Git(如果不安裝這個,後續使用命令安裝Plantform會失敗),作者使用的版本為:Git-2.47.1-64-bit,下載地址:https://git-scm.com/
2、安裝Visual Studio Code,作者使用的版本為VSCodeUserSetup-x64-1.96.2:下載地址:https://code.visualstudio.com/
3、打開Visual Studio Code,點擊左側Extensions,安裝PlatformIO IDE擴展。
4、安裝寶峰K6開發平臺。
使用瀏覽器打開 https://github.com/amoxu/platform-openradiox ,登錄個人賬號(如果不登錄的話,後續使用命令安裝Plantform會失敗)。
在Visual Studio Code下,點擊左側PlatformIO(外星人頭像)圖標,點擊左下方Quick Access -> Miscellaneous -> PlatformIO Core CLI,
執行如下命令:pio pkg install -g -p https://github.com/amoxu/platform-openradiox
5、新建並編譯工程。
新建一個工程,平臺選擇第4步下載的BaoFeng-UV-K6x,默認情況下系統會在以下目錄中創建新工程:
C:\Users\個人的用戶名\Documents\PlatformIO\Projects\工程名
將下載的源程序拷貝到這個路徑下,即可在Visual Studio Code下開展編譯。
編譯安妮在右上方(小勾勾圖標)。
編譯完成后,會在C:\Users\個人的用戶名\Documents\PlatformIO\Projects\工程名\out中生成bin文件,這個就是固件。
———————————————五、後續工作展望———————————————
目前開發的這套源程序,與原廠固件相比,并不是完全一樣的,有一些異同點:
1、增加了信道名+頻率 雙顯示功能,這個很贊。
2、開機LOGO、開機信息無顯示,這個是個BUG。
3、信道模式的B區域,關機之後,會重新回到M001信道,這是個BUG。
4、電池電壓顯示,這個尚未開發。
5、其它尚未發現的BUG。
目前作者身體不適,已經很少再有像從前那樣日日夜夜做開發的精力了,修身養性,保住小命要緊。
希望大家能夠再此基礎上,繼續完善,做出一款好的產品,服務廣大業餘無綫電群體。
謝謝大家。
這裏是BD7OTO,2024.12.07在澳門仁伯爵綜合病院住院部,呼吸與危重症科。
[ 此帖被bd7oto在2024-12-21 12:27重新编辑 ]