謹以此文獻給曾經那個日日夜夜折騰單片機,折騰軟件,折騰對講機,拿青春賭明天的自己。
———————————————目標需求產生———————————————
泉盛K5(以下簡稱該機)是大家折騰的比較廣汎的對講機產品,體積小巧,經濟實惠,可玩性強。
該機使用的MCU型號為DP32G030(其實還有一種説法是這個MCU型號是DP1000,不同的名字而已,以下簡稱DP1000),64K的Flash。
目前這款MCU技術支持差勁,開發資料不太完善,對民間的開發人員不怎麽提供技術支持。
在很早以前就有DualTachyon開源過這款機型的源程序,大家可以下載:
DualTachyon的源程序是在Linux下開發並編譯的,但是大家更多的是習慣在Windows下用KEIL MDK進行單片機開發,於是,目標產生。
———————————————開發前準備工作———————————————
J-LINK是大家常用的單片機仿真調試下載工具,目前J-LINK對DP1000不支持,只能手工添加以增加J-LINK對DP1000系列器件的支持(這個是作者原創出來的)。
資料下載:
需要注意,把壓縮包中DP1000文件夾拷貝到“C:\Program Files (x86)\SEGGER\JLink\Devices”目錄,把“JLinkDevices.xml”文件拷貝到“C:\Program Files (x86)\SEGGER\JLink”目錄。
此外還需要安裝DP1000對MDK5的器件支援包:
———————————————開始移植程序———————————————
由於DualTachyon的源程序是在Linux下開發並編譯的,在Windows下用KEIL MDK會出現N多語法錯誤,需要修改。
經過作者日日夜夜的修改,終於改成了0錯誤0警告,下載到該機中能正常運行。
源程序下載:
又經過作者日日夜夜的修改,重新排列了菜單順序(按照作者感覺更方便的使用習慣修改)
源程序下載:
enum
{
/***********************信道设置***********************/
MENU_TXP = 0, //发射功率 0-2
MENU_R_DCS = 1, //接收数字亚音频 0-208
MENU_R_CTCS = 2, //接收模拟亚音频 0-50
MENU_T_DCS = 3, //发送数字亚音频 0-208
MENU_T_CTCS = 4, //发送模拟亚音频 0-50
MENU_SFT_D = 5, //频差方向 0-2
MENU_OFFSET = 6, //频差频率
MENU_W_N = 7, //宽窄配置 0-1
MENU_S_ADD1 = 8, //是否参与搜索列表1 0-1
MENU_S_ADD2 = 9, //是否参与搜索列表2 0-1
MENU_MEM_CH = 10, //存储信道
MENU_DEL_CH = 11, //删除信道
/***********************搜索设置***********************/
MENU_SC_REV = 12, //搜索恢复方式 0-2
MENU_S_LIST = 13, //扫描列表选择 0-1
MENU_SLIST1 = 14, //信道扫描列表1配置
MENU_SLIST2 = 15, //信道扫描列表2配置
/***********************DTMF设置***********************/
MENU_ANI_ID = 16, //身份码,DTMF通讯本机ID
MENU_UPCODE = 17, //DTMF上线码
MENU_DWCODE = 18, //DTMF下线码
MENU_D_ST = 19, //DTMF侧音开关 0-1
MENU_D_RSP = 20, //DTMF解码响应 0-3
MENU_D_HOLD = 21, //DTMF自动复位时间 5-560
MENU_D_PRE = 22, //DTMF预载波时间 3-99
MENU_PTT_ID = 23, //DTMF PTT-ID发送模式 0-3
MENU_D_DCD = 24, //DTMF解码使能标志 0-1
MENU_D_LIST = 25, //DTMF联系人列表 1-16
/***********************本机设置***********************/
MENU_SQL = 26, //静噪级别 0-9
MENU_STEP = 27, //步进频率
MENU_SCR = 28, //加密通话 0-10
MENU_BCL = 29, //遇忙禁发 0-1
MENU_SAVE = 30, //省电模式 0-4
MENU_VOX = 31, //声控发射配置 0-10
MENU_ABR = 32, //自动背光控制 0-5
MENU_TDR = 33, //双守开关 0-2
MENU_WX = 34, //跨段收发 0-2
MENU_BEEP = 35, //BEEP控制 0-1
MENU_TOT = 36, //发送超时 1-10
MENU_VOICE = 37, //语音提示 0-2
MENU_MDF = 38, //信道显示模式 0-2
MENU_AUTOLK = 39, //键盘自动锁定 0-1
MENU_STE = 40, //尾音消除 0-1
MENU_RP_STE = 41, //过中继尾音消除 0-1
MENU_MIC = 42, //MIC灵敏度 0-4
MENU_1_CALL = 43, //一键即呼
MENU_AL_MOD = 44, //告警模式 0-1
MENU_PONMSG = 45, //开机信息 0-2
MENU_ROGER = 46, //发送结束音 0-2
MENU_VOL = 47, //电池电压 0-1
MENU_AM = 48, //切换调制模式(108-136有效) 0-1
MENU_NOAA_S = 49, //紧急天气频道自动扫描开关
MENU_RESET = 50, //复位 0-1
/***********************隐藏设置***********************/
MENU_350TX = 51,
MENU_F_LOCK = 52,
MENU_200TX = 53,
MENU_500TX = 54,
MENU_350EN = 55,
MENU_SCREN = 56,
};
———————————————更大膽的設想———————————————
DP1000的Flash容量僅僅64K,如果能更換更大容量的兼容芯片,估計能增加更多功能,解鎖更多玩法。
難點:
1、LQFP-32封裝的MCU芯片,几乎都是64K。
2、PIN-PIN封裝(這個好像更難)。
3、DP1000的BOOT0引脚用作了PTT,但是大多數MCU的BOOT0引脚無法作爲普通GPIO口使用。
經過千辛萬苦,作者找到了一款差不多能替代的MCU型號,國民技術N32G435KBL7,經過比對,差不多能滿足要求。
———————————————更換MCU的難點分析———————————————
目前使用國民技術N32G435KBL7有以下難點:
1、J-LINK對這款芯片不予支持,還得需要手工添加到J-LINK器件庫以增加J-LINK對這款芯片的支持。
2、出廠芯片好像設置了L1讀保護,導致下載失敗(好像)。
3、芯片下載不僅僅需要連接SWD調試口,好像還需要連接復位口(如果是這樣,全盛K5要飛一條綫到J-LINK才行)。
4、關於N32G435KBL7的BOOT0引脚,雖然可以設置爲GPIO口(PD0口)。
泉盛K5將這個連接至PPT,默認高電平,按下時是低電平。
但是,默認的高電平會不會導致N32G435KBL7不跑Flash中的程序,只停留在Boot階段?
5、需要移植程序(這個是最漫長最耗費經歷)。
———————————————設想破滅———————————————
其實設想沒有破滅,只是作者不再有精力繼續搞下去了。
爲了解決J-LINK連不上的BUG,爲了解決不能下載的BUG,爲了解決時鐘配置的問題,爲了解決各種各樣的幺蛾子,作者的精力和耐心一再磨滅殆盡。
最終在頻繁更換MCU,導致按鍵掉落,扔進了早就應該屬於它的垃圾桶中。
這裏是BD7OTO,
2024.04.20在澳門氹仔
[ 此帖被bd7oto在2024-04-20 11:47重新编辑 ]