论坛风格切换切换到宽版
  • 444阅读
  • 5回复

跟著BD7OTO學習泉盛K5單片機固件編譯開發(終稿) [复制链接]

上一主题 下一主题
离线bd7oto
 
发帖
30
只看楼主 倒序阅读 0楼 发表于: 04-20
謹以此文獻給曾經那個日日夜夜折騰單片機,折騰軟件,折騰對講機,拿青春賭明天的自己。

———————————————目標需求產生———————————————



泉盛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重新编辑 ]
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
高级硬件攻城狮+程序猿,擅长DSP、FPGA、ARM
微信:132,三两两八,8051
QQ:344266487
https://shop197337704.taobao.com/
用最严格的规范去创造最可靠的产品,服务社会,创造价值
离线王雷生
发帖
1066
只看该作者 1楼 发表于: 04-20
真羡慕你的能力,玩的都是狠活。
呼号:BG6OJX
QQ:68330835
电话:19939000388
地址:河南 济源 沁园 南夫 胜利街北六巷四十六号
离线bd8cb/8
发帖
3525
只看该作者 2楼 发表于: 04-20
加油!????????????
EX BG8CB BD8CB ,8CB一世,欢迎后人传承、认祖归宗——HAM圈是小众的技术类兴趣爱好团体,为创收敛财而滥竽充数,扼杀了HAM的生存和发展空间!

团结是双方都作出让步,如果一方步步紧逼,另一方无限退让,那不是团结,而是剥削和压榨! ——“以斗争求团结,则团结者存!”

如果我们的军队不愿意尽保护国民、支援盟友的义务,我们就不会有国民和盟友......

当正确与正义不属于同一阵营的时候,要选择站在良知一方......

对吃不上饭的人讲道德是最大的不道德,当人被压迫到濒临死境时,那一切为了生存而采取的行为都是道德的!
离线BD7JAC
发帖
38395
只看该作者 3楼 发表于: 04-20
很详细的分析编译
读万卷书心中不留一字,行千里路忘尽途中影子!
EX:BG7JAC、XX9TJC 
OL51EG   TEL:棕橙紫黑红灰紫蓝蓝红灰  
Email:bd7jac艾特chinaham.org
离线kkkdxy
发帖
308
只看该作者 4楼 发表于: 04-20
这些STM32-like MCU非常低成本,有这些分析,自己diy一个都可以了。牛人!把对讲机玩成了开发板
BD7NFO
离线ba6iv
发帖
1285
只看该作者 5楼 发表于: 04-22
佩服楼主的技术钻研精神
__________________
The DX chaser.
QQ: 1 8 8 4 0 3 5 8 7
https://shop183408945.taobao.com/