全网首发,克莱斯勒大捷龙jeep道奇DIY数码碟盒增加USB和蓝牙播放音乐功能使用原车接口无损改装
文章目录
- 前言
- 1、设计指标
- 2、J1850协议
- 2.1 J1850通信波形抓取
- 3、外观设计
- 4、原理图设计
- 5、PCB设计
- 6、程序设计
- 7、调试
- 8、大捷龙车机接口
- 9、pin碟盒接口定义
- 9.1、模块与10车机连接方法
- 8、安装方法
- 10、 使用方法
- 10.1 CD车机按钮功能定义
- 11、 联系我
前言
之前写过三篇篇关于大众车机增加音频输入的方法。
1、07宝来经典车机CD收音机(RC668)改装增加蓝牙播放音乐
2、全网首发!老大众奥迪碟盒通信协议破解,可以模拟数码碟盒,外接AUX蓝牙U盘等音频设备
3、全网首发!大众奥迪DIY数码碟盒增加USB和蓝牙播放音乐功能使用原车接口无损改装
这回是一大捷龙车主和我讲了他们老车没有蓝牙的痛苦,热情邀请我帮他们美系克莱斯勒老车机增加蓝牙和USB。车主是个十分好豪爽的人,所以就答应了他。车主很快将他车上的车机和10碟发给我。但是由于疫情和工作影响断断续续弄了1个多月,功能基本完成。可以实现如下功能。
1、支持蓝牙或者U盘播放音乐
2、支持原车按钮控制
3、可以接挂电话
4、走得是原车碟盒通道可以实现高品质音乐
1、设计指标
模块规格如下:
输入电压 | 11V-14.6V/DC |
---|---|
工作电流 | 200mA |
工作温度 | -40℃~+80℃ |
信噪比 | 95dB |
频率响应 | 20HZ-20KHZ |
2、J1850协议
早期美系车型基本都是采用单总线J1850VPW协议的,大捷龙主机和碟盒之间的通信就是通过J1850协议实现的。所以破解传输的内容就可以虚拟出一个数码碟盒出来。下面介绍来自百度百科。
1850总线是1994年由汽车工程师协会(Society of Automotive Engineers;SAE)所颁布的标准,之后普及运用于美国车厂的汽车中,如福特(Ford)、通用汽车(General Moter;GM)、克赖斯勒(Chrysler)等,虽然美国车厂多实行J1850标准,但各厂的实际作法各有不同,Ford的实体层设计与GM、Chrysler不同,而GM与Chrysler的实体层虽相同,但更上层的讯框格式却不同,等于3家车厂有3种协定。 [1]
在J1850总线上,消息以数字信号形式的传输,数字信号的显性位优先级高于隐性位优先级。当总线被高优先级的消息占用时,低优先级的消息被停止发送,只有当总线空闲时被停止发送的消息才能被再次发送,这是为了避免总线上消息冲突而导致消息的丢失。在判断是否应该接收总线所传输的消息时,J1850协议采用全帧比较的方式,即从帧起始位开始一位位进行比较,直到帧结束为止。此方式不会破坏帧结构和内容,这种非破坏式冲突解决的方法也是该协议的核心。J1850协议没有严格地定义可能出现的帧错误。但是,它采用CRC校验法则来检测错误帧。当发送站点检测到自己发送的帧信息出现错误时,它会自动中断发送过程。而接收此消息的站点收到这个错误帧时会完全抛弃该帧。 J1850 应用层主要用于操作信息提示和故障诊断。SAE已经进一步扩充了该协议,并把扩充部分写入J2178协议之中。
就车用电子的总线分类而言,J1850属于B级(Class B)的总线,B级总线的速率约在20kbps~125kbps间,较此更低速的为A级总线,速率低于20kbps以下,最知名的即是LIN Bus。B级总线的主要用途为车用信息中心、仪表显示、故障检测诊断等。由于J1850的实际运用混乱,因此有逐渐淘汰的趋势,预计最有可能用来取代J1850的是低速版的CAN Bus。
如前所述,J1850有不同的实体层作法,一种是以脉宽调变(Pulse Width Moduleated;PWM)方式传送,运用2条线路以差动方式进行传输,最高速率为41.6kbps;另一种是可变脉宽(Variable Pulse Width;VPW)方式,此方式仅使用1条线路就可传输,最高速率为10.4kbps。
在逻辑准位方面,J1850的高准位电压约在4.25V~20V间,而低准位电压则低于3.5V。要注意的是,1个高电压(或低电压)并不代表输出1个bit的信息,而是1个「bit symbol」,1个bit symbol最少可以携带1个bit的信息,但也可以更多,视调变作法而定。此外,每个Symbol的传递有其时间限制,以单线方式传输而言1个Symbol的传递时间为64微秒或128微秒。
在实体线路上,J1850总线平时会连接1个微弱的下拉式电阻,当总线被驱动时则会将线路电压拉至高准位,拉至高准位的同时也等于取得总线的主导权、使用权。若发生争抢总线主导权的情形,则J1850使用CSMA/CR方式对争抢进行仲裁,以决定总线上某个节点有权先使用总线。
来自百度百科介绍
2.1 J1850通信波形抓取
J1850 VPW – 以数据位为基本单位进行传输,定义了一个起始位(SOF):200us 的高电平代表开始进行位传输,定义了一个结束位(EOF):280us 的低电平表示位传输正常结束,起始位之后的数据位表示方式可认为为:电平不断的翻转,每次产生一次翻转便产生一个新的数据位,这个数据位为“0”还是“1”由翻转时电平的持续时间来决定,数据位“0”用 64us 的低电平或 128us 的高电平表示,数据位“1” 用 64us 的高电平或 128us 的低电平表示。另在网络节点多的时候VPW 针对链路层定义了有效数据域结束位(EOD),帧间仲裁时间(IFS),多数据域时接收节点的应答就绪响应时间(IFR)如下图所示:
空闲时总线为低电平
使用逻辑分析仪抓取通信波形
起始位 SOF
毛刺
3、外观设计
经过几天筛选找到了下面这个外壳 ,长x宽x高 = 6x4x2 CM 还算小巧,上面有一个按键孔和一个5mmLED孔,安排一些功能将这两个孔堵上,侧面是MINIUSB和10PIN牛角座。
4、原理图设计
根据J1850总线通信原理和上面抓取到的波形设计电平转换电路图。
5、PCB设计
要想音质好,地分割隔离少不了,再打上多多的过孔,特批是射频部分一定要多打孔。
放上伪3D效果图。
6、程序设计
贴上核心程序代码
J1850的接收程序使用定时器2的捕获模式捕获边沿,J1850接收程序。
/*捕捉中断*/
void ETM2_IRQHandler(void)
{uint32_t nextVal;uint32_t curVal = ETM2->CNT;if(ETM2->SC & ETM_SC_TOF_MASK) //清除溢出标志位{ETM2->SC &= ~ETM_SC_TOF_MASK;}if(ETM2->CONTROLS[0].CnSC & ETM_CnSC_CHF_MASK )//输入信号边沿变化{ETM2->CONTROLS[0].CnSC &= ~ETM_CnSC_CHF_MASK;if(RxInProgress == (VPW_RxStatus_t)Idle) // 产生下降沿{RxInProgress = (VPW_RxStatus_t)SOF;VPW_RxBufPtr = 0;
// ResetRx();if(VPW_TxBufPtr >1){VPW_RxBufPtr = 0;}ETM2->CONTROLS[0].CnSC |= ETM_CnSC_ELSB_MASK; //切换到跳边沿检测}else if(RxInProgress == 1){uint32_t width;uint8_t symIdx;width = GetPulseWidth(PrevCntrVal, curVal);if(width > RX_SOF_MIN && width <= RX_SOF_MAX){symIdx = SOF_IDX;}else if(width > RX_LONG_MIN && width <= RX_LONG_MAX){symIdx = LONG_IDX;}else if(width > RX_SHORT_MIN && width <= RX_SHORT_MAX){symIdx = SHORT_IDX;}else{ResetRx();return;}VPW_RxBuf[VPW_RxBufPtr] = symIdx;if(TxInProgress == 1) //正在发送{if(VPW_RxBuf[VPW_RxBufPtr] != VPW_TxBuf[VPW_RxBufPtr]){FinalizeTx();}}if(VPW_RxBufPtr < sizeof(VPW_RxBuf) - 2){VPW_RxBufPtr++;}SetTimerAlarm(239*48);}PrevCntrVal = curVal;}if(ETM2->CONTROLS[0].CnSC & ETM_CnSC_CHF_MASK )//输入信号上升沿{ETM2->CONTROLS[0].CnSC &= ~ETM_CnSC_CHF_MASK;}
}
J1850的发送程序使用定时器0产生波形
/*****************************************************************************//*!
*
* @brief ETM1 回调函数
*
* @param none
*
* @return none
*
*****************************************************************************/
void ETM0_IRQHandler(void)
{uint32_t nextVal;ETM_ClrOverFlowFlag(ETM0); //清除溢出标志位ETM_ClockSet(ETM0, ETM_CLOCK_NOCLOCK, ETM_CLOCK_PS_DIV16); //停止计数nextVal = VPW_Symbols[VPW_TxBuf[VPW_TxBufPtr]];if((VPW_TxBuf[VPW_TxBufPtr] == EOF_IDX)||(VPW_TxBufPtr>=(TX_BUFLEN*8))){FinalizeTx();}else{ETM_SetModValue(ETM0,nextVal);ETM0->CNT = 0;ETM_ClockSet(ETM0, ETM_CLOCK_SYSTEMCLOCK, ETM_CLOCK_PS_DIV16); //开始计数GPIO_Toggle(GPIOA,J1850_OUT_MASK);}VPW_TxBufPtr++;}
定义结构体 用于保存车机播放音乐相关信息。
typedef struct
{uint8_t rnd;uint8_t scan;uint8_t playing;uint8_t cd_button;uint8_t cd_power;uint8_t cd_status;uint8_t disc; uint8_t track; uint8_t minute; uint8_t second; uint8_t workSta; // 工作状态0 关机 1 待机 2工作uint8_t BIDIstate; // pointer to the current state handler routineuint8_t BIDIcount;uint8_t staCount;} CD_CHANFER_STRUCT;
7、调试
插上模块抓取数据分析包 抓到如下数据包 根据测试结果调试程序
[16:42:44.875]收←◆63 70 de —
[16:42:46.330]收←◆63 70 de —
[16:42:46.682]收←◆8d 92 c0 0 0 +++
[16:42:47.787]收←◆82 6d 3f ff ff —
[16:42:48.618]收←◆36 58 0 3 f8 —
[16:42:49.259]收←◆8d 90 0 3 f8 —
[16:42:49.369]收←◆ —
[16:42:50.746]收←◆8d 93 0 0 7 —
[16:42:50.873]收←◆8d f 21 +++
[16:42:51.642]收←◆36 4c 3 78 68 —
[16:42:52.233]收←◆8d 93 0 0 50 +++
[16:42:53.145]收←◆8d f 24 +++
[16:42:54.648]收←◆8d f 24 +++
[16:42:55.193]收←◆8d 93 0 0 50 +++
[16:42:56.140]收←◆8d f 0 0 50 —
[16:42:56.680]收←◆8d 93 0 0 50 +++
[16:42:57.640]收←◆8d f 24 +++
[16:42:58.153]收←◆8d 93 0 0 50 +++
[16:42:59.144]收←◆8d f 24 +++
[16:42:59.640]收←◆8d 93 0 0 50 +++
[16:43:00.647]收←◆8d f 24 +++
[16:43:01.127]收←◆8d 93 0 0 50 +++
[16:43:02.150]收←◆8d f 24 +++
[16:43:02.615]收←◆8d 93 0 0 50 +++
[16:43:03.655]收←◆8d f 24 +++
[16:43:04.086]收←◆8d 93 0 0 50 +++
[16:43:05.144]收←◆8d f 0 0 50 —
[16:43:05.574]收←◆8d 93 0 0 50 +++
[16:43:06.617]收←◆ +++
[16:43:08.151]收←◆8d f 24 +++
[16:43:08.517]收←◆8d 8f 24 —
[16:43:09.653]收←◆8d f 24 +++
[16:43:10.005]收←◆8d 93 1 —
[16:43:11.157]收←◆8d f 24 +++
[16:43:11.477]收←◆8d 93 1 0 70 —
[16:43:11.973]收←◆8d 93 1 0 80 —
[16:43:12.660]收←◆8d f 24 +++
[16:43:12.965]收←◆8d 93 1 0 80 +++
[16:43:14.148]收←◆8d f 1 0 80 —
[16:43:14.452]收←◆8d 93 1 0 80 +++
[16:43:15.652]收←◆8d f 24 +++
[16:43:15.924]收←◆8d 93 1 1 80 +++
[16:43:16.195]收←◆8d 94 0 0 +++
[16:43:17.155]收←◆8d f 24 +++
[16:43:17.412]收←◆8d 93 1 1 80 +++
[16:43:18.195]收←◆8d 94 0 2 +++
[16:43:18.659]收←◆8d f 24 +++
[16:43:18.899]收←◆8d 93 1 1 80 +++
[16:43:19.171]收←◆8d 94 0 3 +++
[16:43:20.162]收←◆8d f 24 +++
[16:43:20.387]收←◆8d 93 1 1 80 +++
[16:43:21.171]收←◆8d 94 0 5 +++
[16:43:21.666]收←◆8d f 24 +++
8、大捷龙车机接口
9、pin碟盒接口定义
AUDIO R | 右声道 | AUDIO L | 左声道 |
---|---|---|---|
AUDIO GND | 模拟GND | GND | 数字GND |
SHIELD | 未用 | SPARE | 未用 |
J1850 | 数据总线 | PWD | 未用 |
ACC | 点火 | BATT | 12V 电源 |
9.1、模块与10车机连接方法
车机与模块引脚连接对应关系表
模块引脚 | 车机引脚 | 模块引脚 | 车机引脚 |
---|---|---|---|
L | 6脚 左声道 | R | 1脚 右声道 |
AG | 2 模拟地 | AG | 2脚 模拟地 |
IN | 4 脚 J1850总线 | ||
HU | 5脚 ACC开机信号 | ||
12V | 10脚12V电源 | DG | 7脚 |
备注: 数字地和模拟地不能连接到一起
8、安装方法
1、将汽车停在安全地方熄火,拔下车钥匙;
2、根据实际情况取出汽车CD车机;
3、使用配套的线束或者根据上文接口定义自己DIY线束,通过线束将模块和车机连起来;
4、将数字地与车机外壳牢固搭铁;
5、插入钥匙打开钥匙 按车上(CD、CDC、DISC、SOURCE、SRC、MODE等按钮进入碟盒模式开始播放音乐;
6、调试没有问题后,如果不使用蓝牙,可以将模块放在车机的后方放回去,或者将模块放到手套箱中,自己喜欢放到哪都行。然后将车机放回即可安装完成;
注意:改装有风险,下手需谨慎,因车型的不同,难易程度不同,当你选择下手的时候,强烈建议找个老司机带你。
10、 使用方法
10.1 CD车机按钮功能定义
大捷龙车机在进入CD模式后,只有SEEK+、SEEK-、FF、RW、DISC+、DISC-。这几个按钮可以使用。现在做以下映射
车机按钮映射表
车机按钮 | 模块功能 |
---|---|
DISC+ | 上一个文件夹播放 |
DISC+ | 下一个文件夹播放 |
SEEK+ | 上一曲/接电话 |
SEEK- | 下一曲/挂电话 |
FF | 蓝牙模式 |
RW | U盘模式 |
9.2 模块指示灯定义
红灯为U盘蓝牙状态指示灯,蓝灯为模块运行状态指示灯。
指示灯状态表
灯闪烁方式 | 模块状态 |
---|---|
蓝灯熄灭 | 不可以和车机通信 |
蓝灯快闪 | 可以和车机通信 |
红灯快闪 | 进入蓝牙 |
红灯常亮 | 连接成功 |
红灯慢闪 | 正在播放 |
红灯关闭 | 进入关机模式 |
状态改变说明表
条件 | 动作 |
---|---|
正在播放音乐,此时连接蓝牙 | 音乐停止播放,进入蓝牙模式等待播放音乐 |
蓝牙模式,按下U盘模式按钮 | 开始播放音乐 |
蓝牙连接上,正在播放U盘音乐 | 蓝牙发出声音自动切换到蓝牙模式 |
测试视频
大捷龙蓝牙
大捷龙演示视频
11、 联系我
下面准备好了DIY套件,感觉动手吃力的朋友可以下单购买。
模块链接: 淘宝连接
升级服务
产品定制升级
产品定制升级
商务合作
汽车电子开发
电子产品开发
联系方式
请先加V沟通
VX : 15566031081
商务合作:15566031081
全网首发,克莱斯勒大捷龙jeep道奇DIY数码碟盒增加USB和蓝牙播放音乐功能使用原车接口无损改装相关推荐
- 全网首发克莱斯勒东南大捷龙jeep道奇DIY数码碟盒增加USB和蓝牙播放音乐功能使用原车接口无损改装
文章目录 前言 碟盒功能 1.设计指标 3.外观设计 4.PCB设计 5.程序设计 6.调试 7.大捷龙车机尾插接口定义 公头东南大捷龙车机白色插头 模块与白色插头连接方法 8.安装方法 9. 使用方 ...
- 全网首发,大众奥迪领驭帕萨特DIY数码碟盒增加USB和蓝牙播放音乐功能使用原车接口无损改装
文章目录 全网首发!大众奥迪DIY数码碟盒增加USB和蓝牙播放音乐功能 前言 1.设计指标 2.方案设计 2.1.外壳选择 2.2.蓝牙方案 2.3.MCU方案 3.原理图设计 4.PCB设计 5.程 ...
- 全网首发!老大众奥迪碟盒通信协议破解,可以模拟数码碟盒,外接AUX蓝牙U盘等音频设备
文章目录 前言 什么是碟盒? 碟盒接口定义 车机与碟盒之间的通信协议 主机向碟盒发送数据协议 数据帧格式 逻辑分析仪真机抓包分析 起始信号波形: 数据0信号波形: 数据1信号波形: 逻辑分析仪抓包分析 ...
- 07宝来经典车机CD收音机(RC668)改装增加蓝牙播放音乐
最新教程模拟碟盒通破老大众全系列 https://blog.csdn.net/songisgood/article/details/111869214 全网首发!大众奥迪DIY数码碟盒增加USB和蓝牙 ...
- 全网首发,自制ADK To Win11PE(1)中文+包
当时发布的时候B站.无忧等等论坛也没有做出Win11PE,因此标题全网首发 Win11PE初步定制 一.安装ADK 1.安装部署工具 2.安装winpe加载项 二.用微软官方部署工具创建基础PE 1. ...
- 中柏ezpad4s_699元快抢 中柏EZpad4s时尚版全网首发
原标题:699元快抢 中柏EZpad4s时尚版全网首发 [ 来自IT168 ] [IT168 资讯]对于众多关注中柏10.6寸EZpad4s时尚版双系统平板电脑的消费者来说,在经历了短暂而又漫长的半个 ...
- [Python从零到壹] 十四.机器学习之分类算法五万字总结全网首发(决策树、KNN、SVM、分类对比实验)
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- [Python从零到壹] 十三.机器学习之聚类算法四万字总结全网首发(K-Means、BIRCH、树状聚类、MeanShift)
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- [Python从零到壹] 十二.机器学习之回归分析万字总结全网首发(线性回归、多项式回归、逻辑回归)
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- PTA 栈 (20分)(全网首发)(实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1))
题目描述: 我们知道平凡的栈有几个操作: push(value) 将 value 压入栈 pop() 将栈顶元素弹出, 并返回这个弹出的元素. 现在我们想要在平凡栈的基础上实现以下几个操作: push ...
最新文章
- 对Java基本数据类型的再思考
- 【深度学习】Transfomer在文本处理上的应用(风格识别)
- RequestMapping || @RequestMapping 模糊匹配功能
- 用SHELL访问特定的URL
- linux mysql timestamp_MYSQL中TIMESTAMP类型的使用
- GPU代码修改成TPU代码
- 深入Java核心:JVM中的栈和局部变量
- c++语言中for循环语句,C++ 循环
- python学习笔记 day20 常用模块(六)
- 几种如何判断环境是否连上网方法,推荐最后一种
- jsoncpp解析json报文测试
- ELK 把date替换为logstash的@timestamp
- ezcad旋转轴标刻参数_激光打标机软件ezcad中菜单下的旋转角度标刻功能介绍及其操作设置...
- python播放音乐同步歌词_Python 歌词解析器 音乐与歌词同步播放
- oracle临时表空间占用率过高,ORACLE 临时表空间使用率过高的原因及解决方案
- 2019 WordPress免费收费中文主题推荐 强迫症患者的救赎
- C++:实现将华氏度转换为摄氏度
- 软件工程课程第二次任务——需求分析与原型设计
- Python预测股票走势
- String为什么要用equals而不用==?