最近老婆喜欢上了唱歌。我就需要为她准备歌曲和设备。装了台点歌机,买了软件,用4天的时间下了4T容量的歌曲,听过的没听过的都在里面,真的是太多了。
有了歌曲,就要有唱歌设备了。当我准备买无线话筒的时候,无意间看到闲鱼上有卖话筒的,25块钱,没主机。我年少无知,买回来了。我就想知道,这无线话筒有什么计数含量动辄几百块的一套。
买回来一看,果然,这是u段的数字话筒,发射ic是BK9521,网上查了一下资料,和BK9522是发射接收一对的。
于是开始找接收机。闲鱼真是什么都有,很快就找到一个只有接收没有话筒的,50块,买回来再说。其实真不差钱,主要是这两颗料激发了探索的兴趣。我看到资料里有关于9521/22寄存器的详细描述,觉得只要是成套,通信成功的几率是很大的。
然而我想错了。。。。
实际上收到货的第一时间我就通上了电。
对于话筒我想先看下有没有发射出来,我找出来了SDR,
果然,正常发射数据,而不是那些低端的调频话筒。发射的频点准确可调,数据密度极高。
这个接收机支持红外对频,然而话筒不支持对频。
再接上接收机,调到一样的频率,如图中656.00Mhz. 结果没有显示信号柱,输出端子也没有音频输出。
至此,对于普通人来说,应该放弃了。虽然钱不多,但是这个东西在我眼里不过就是一些寄存器的操作而已,如果丢弃将失去一次调试这个料的机会。毕竟这两个东西是妥妥的开发板状态,等着我去探索。
这个料是使用IIC驱动的,SDA,SCL两个管脚都是清晰可见,焊上线,先把数据流扒下来再说。
首先把发射机和接收机的频率调节成一致的,656M。 关机,启动逻辑分析仪,等待触发,开机。
一顿操作猛如虎。。。
发射机的数据流
Time[s],Packet ID,Address,Read/Write,Data
0.0000200000,1,0x21,R,0x21 0x00 0x00 0x95 0x21
0.0009080000,2,0x21,R,0x00 0x1C 0x44 0x0C 0x88
0.0019580000,3,0x21,R,0x02 0x04 0xCF 0x00 0x57
0.0030160000,4,0x21,R,0x04 0x89 0x90 0xE0 0x2F
0.0040770000,5,0x21,R,0x06 0xB4 0x22 0x46 0xFF
0.0051550000,6,0x21,R,0x08 0x51 0x88 0x00 0x44
0.0062070000,7,0x21,R,0x0A 0x00 0x28 0x03 0x80
0.0072640000,8,0x21,R,0x0C 0x5B 0xED 0xFB 0x00
0.0083240000,9,0x21,R,0x0E 0x1C 0x40 0x00 0x00
0.0094000000,10,0x21,R,0x10 0x00 0x08 0x01 0x00
0.0104520000,11,0x21,R,0x12 0x00 0x00 0x00 0x03
0.0115070000,12,0x21,R,0x14 0x05 0x8C 0x30 0x30
0.0125690000,13,0x21,R,0x16 0x00 0x06 0xC3 0xFF
0.0136490000,14,0x21,R,0x20 0xE4 0x16 0x95 0x21
0.0146630000,15,0x21,R,0x22 0x34 0xB0 0x02 0x91
0.0156900000,16,0x21,R,0x24 0x00 0x00 0x00 0x40
0.0167220000,17,0x21,R,0x26 0x00 0x00 0x00 0x00
0.0177540000,18,0x21,R,0x32 0x00 0x00 0x00 0x00
0.0187830000,19,0x21,R,0x34 0x00 0x00 0x52 0xC0
0.0198120000,20,0x21,R,0x36 0x53 0x02 0x00 0x00
0.0208480000,21,0x21,R,0x38 0x04 0x02 0x03 0xFF
0.0218810000,22,0x21,R,0x3A 0x58 0x02 0x6C 0x02
0.0229160000,23,0x21,R,0x3C 0x0B 0x4B 0x32 0x1B
0.0239500000,24,0x21,R,0x3E 0x00 0x00 0x00 0x80
0.0249790000,25,0x21,R,0x40 0x00 0x00 0x55 0xA0
0.0260130000,26,0x21,R,0x42 0x00 0xD7 0xD5 0xF7
0.0270510000,27,0x21,R,0x44 0x00 0x00 0x00 0x00
0.0280750000,28,0x21,R,0x46 0x7F 0x7F 0x00 0xA0
0.0291120000,29,0x21,R,0x4A 0x00 0x00 0x70 0x50
0.0301480000,30,0x21,R,0x4C 0x0F 0x80 0x1E 0x04
0.0311620000,31,0x21,R,0x4E 0x40 0x40 0x40 0x40
0.0321940000,32,0x21,R,0x50 0x00 0x00 0x00 0x40
0.0332220000,33,0x21,R,0x52 0x03 0xF0 0x64 0x00
0.0342590000,34,0x21,R,0x60 0x01 0x00 0x00 0x00
0.0352930000,35,0x21,R,0x62 0x07 0x05 0x04 0x02
0.0363260000,36,0x21,R,0x64 0x12 0x0F 0x0C 0x0A
0.0373580000,37,0x21,R,0x66 0x22 0x1E 0x1A 0x16
0.0383970000,38,0x21,R,0x68 0x35 0x30 0x2B 0x26
0.0394320000,39,0x21,R,0x6A 0x4B 0x45 0x40 0x3A
0.0404690000,40,0x21,R,0x6C 0x63 0x5D 0x57 0x51
0.0415100000,41,0x21,R,0x6E 0x7C 0x76 0x70 0x69
0.0425470000,42,0x21,R,0x70 0x96 0x8F 0x89 0x83
0.0435860000,43,0x21,R,0x72 0xAE 0xA8 0xA2 0x9C
0.0446250000,44,0x21,R,0x74 0xC5 0xBF 0xBA 0xB4
0.0456580000,45,0x21,R,0x76 0xD9 0xD4 0xCF 0xCA
0.0466980000,46,0x21,R,0x78 0xE9 0xE5 0xE1 0xDD
0.0477390000,47,0x21,R,0x7A 0xF5 0xF3 0xF0 0xED
0.0487780000,48,0x21,R,0x7C 0xFD 0xFB 0xFA 0xF8
0.0498150000,49,0x21,R,0x7E 0xFF 0xFF 0xFF 0xFE
0.0510080000,50,0x21,R,0x06 0xB4 0x12 0x26 0xFF
0.0520590000,51,0x21,R,0x36 0x4F 0xB6 0x40 0x00
0.0530820000,52,0x21,R,0x44 0x55 0x55 0x55 0x55
0.0540830000,53,0x21,R,0x35 0x00 0x00 0x52 0xC0
0.0549620000,54,0x21,R,0x34 0x00 0x00 0x52 0x40
0.0559830000,55,0x21,R,0x34 0x00 0x00 0x52 0xC0
0.0569890000,56,0x21,R,0x14 0x05 0x8C 0x30 0x00
0.0580320000,57,0x21,R,0x3F 0x00 0x00 0x00 0x80
0.0589110000,58,0x21,R,0x3E 0x00 0x00 0x00 0x00
0.0599290000,59,0x21,R,0x41 0x00 0x00 0x55 0xA0
0.0607930000,60,0x21,R,0x40 0x00 0x00 0x55 0x20
0.0618130000,61,0x21,R,0x0E 0x0E 0x40 0x00 0x00
0.0628560000,62,0x21,R,0x06 0xB4 0x12 0x26 0xFF
0.0639060000,63,0x21,R,0x06 0xB4 0x52 0x26 0xFF
0.1073250000,64,0x21,R,0x08 0x51 0x88 0x00 0x44
0.1083990000,65,0x21,R,0x08 0x53 0x88 0x00 0x44
0.1094460000,66,0x21,R,0x0E 0x1C 0x40 0x00 0x00
0.1104910000,67,0x21,R,0x3F 0x00 0x00 0x00 0x00
0.1113470000,68,0x21,R,0x3E 0x00 0x00 0x00 0x80
0.1123690000,69,0x21,R,0x41 0x00 0x00 0x55 0x20
0.1132240000,70,0x21,R,0x40 0x00 0x00 0x55 0xA0
0.1142460000,71,0x21,R,0x14 0x05 0x8C 0x30 0x30
0.3271840000,72,0x21,R,0x3D 0x0B 0x4B 0x32 0x1B
0.3280500000,73,0x21,R,0x3C 0x0B 0x4B 0x32 0x1B
0.5176780000,74,0x21,R,0x33 0x00 0x00 0x00 0x00
0.7172070000,75,0x21,R,0x33 0x00 0x00 0x00 0x00
0.9167310000,76,0x21,R,0x33 0x00 0x00 0x00 0x00
1.1162720000,77,0x21,R,0x33 0x00 0x00 0x00 0x00
1.3158250000,78,0x21,R,0x33 0x00 0x00 0x00 0x00
1.5154100000,79,0x21,R,0x33 0x00 0x00 0x00 0x00
1.7150020000,80,0x21,R,0x33 0x00 0x00 0x00 0x00
接收机的数据流:
Time[s],Packet ID,Address,Read/Write,Data
0.0164440000,1,0x22,W,0x21 0x00 0x00 0x95 0x22
0.0168040000,2,0x22,W,0x00 0xDF 0xFF 0xFF 0xF8
0.0172190000,3,0x22,W,0x02 0x04 0xD2 0x80 0x57
0.0176350000,4,0x22,W,0x04 0x89 0x90 0xE0 0x28
0.0180510000,5,0x22,W,0x06 0x04 0x12 0x26 0x9F
0.0184670000,6,0x22,W,0x08 0x50 0x88 0x00 0x44
0.0188820000,7,0x22,W,0x0A 0x00 0x28 0x03 0x80
0.0192980000,8,0x22,W,0x0C 0x5B 0xED 0xFB 0x00
0.0197140000,9,0x22,W,0x0E 0x1C 0x24 0xC5 0xAA
0.0201330000,10,0x22,W,0x10 0xEF 0xF1 0x19 0x4C
0.0205490000,11,0x22,W,0x12 0x08 0x51 0x13 0xA2
0.0209650000,12,0x22,W,0x14 0x00 0x6F 0x00 0x6F
0.0213800000,13,0x22,W,0x16 0x1B 0xD2 0x58 0x63
0.0217960000,14,0x22,W,0x20 0xE4 0x16 0x95 0x22
0.0222120000,15,0x22,W,0x22 0x00 0x00 0x00 0x00
0.0226280000,16,0x22,W,0x2C 0x00 0x08 0x00 0xBD
0.0230440000,17,0x22,W,0x2E 0x00 0x00 0x00 0x00
0.0234590000,18,0x22,W,0x30 0x00 0x00 0x00 0x00
0.0238750000,19,0x22,W,0x32 0x00 0x44 0x6D 0x60
0.0242910000,20,0x22,W,0x34 0x00 0x00 0x32 0xC0
0.0247070000,21,0x22,W,0x36 0x54 0xB0 0x51 0xEB
0.0251220000,22,0x22,W,0x38 0x00 0x17 0xFC 0xFF
0.0255380000,23,0x22,W,0x3A 0x00 0x32 0x00 0x0A
0.0259540000,24,0x22,W,0x3C 0x00 0x00 0x00 0x00
0.0263690000,25,0x22,W,0x3E 0x00 0x00 0x00 0x00
0.0267850000,26,0x22,W,0x40 0x00 0x00 0x00 0x00
0.0272010000,27,0x22,W,0x42 0x00 0x00 0x00 0x00
0.0276170000,28,0x22,W,0x44 0x00 0x00 0x00 0x00
0.0280320000,29,0x22,W,0x46 0x00 0x00 0x00 0x00
0.0284480000,30,0x22,W,0x48 0x00 0x00 0x00 0x00
0.0288640000,31,0x22,W,0x4A 0x00 0x00 0x00 0x00
0.0292790000,32,0x22,W,0x4C 0x00 0x00 0x00 0x00
0.0296950000,33,0x22,W,0x4E 0x00 0x00 0x00 0x00
0.0301140000,34,0x22,W,0x50 0x00 0x00 0x00 0x00
0.0305300000,35,0x22,W,0x52 0x00 0x00 0x00 0x00
0.0309460000,36,0x22,W,0x54 0x00 0x00 0x00 0x00
0.0313610000,37,0x22,W,0x56 0x00 0x00 0x00 0x00
0.0317770000,38,0x22,W,0x58 0x00 0x00 0x00 0x00
0.0321930000,39,0x22,W,0x5A 0x00 0x00 0x00 0x00
0.0326080000,40,0x22,W,0x5C 0x00 0x00 0x00 0x00
0.0330240000,41,0x22,W,0x5E 0x00 0x00 0x00 0x00
0.0334400000,42,0x22,W,0x60 0x00 0x00 0x00 0x00
0.0338560000,43,0x22,W,0x62 0x00 0x00 0x00 0x00
0.0342710000,44,0x22,W,0x64 0x02 0x82 0x3D 0x38
0.0346870000,45,0x22,W,0x66 0x00 0xD7 0xD5 0xF7
0.0351030000,46,0x22,W,0x68 0x00 0x00 0x00 0x00
0.0355180000,47,0x22,W,0x6A 0x00 0x00 0x00 0x00
0.0359340000,48,0x22,W,0x6C 0x02 0x46 0x02 0x02
0.0363500000,49,0x22,W,0x6E 0x90 0xF6 0xAA 0x26
0.0367650000,50,0x22,W,0x70 0x1F 0x80 0x1E 0x07
0.0371810000,51,0x22,W,0x72 0x40 0x40 0x40 0x40
0.0375970000,52,0x22,W,0x74 0x00 0x00 0x00 0x40
0.0380130000,53,0x22,W,0x76 0x00 0x78 0x64 0x00
0.0384280000,54,0x22,W,0x78 0x00 0x00 0x00 0x00
0.0442420000,55,0x22,W,0x65 0x02 0x82 0x3D 0x38
0.0445860000,56,0x22,W,0x64 0x02 0x82 0x3D 0x38
0.0450850000,57,0x22,W,0x06 0x04 0x12 0x26 0x9F
0.0454840000,58,0x22,W,0x0E 0x1C 0x2E 0xC5 0xAA
0.0458840000,59,0x22,W,0x10 0xEF 0xF1 0x19 0x4C
0.0463340000,60,0x22,W,0x36 0x50 0x19 0x1E 0xB8
0.0467410000,61,0x22,W,0x0E 0x1E 0x2E 0xC5 0xAA
0.0471400000,62,0x22,W,0x06 0x04 0x12 0x26 0x9F
0.0475390000,63,0x22,W,0x06 0x04 0x52 0x26 0x9F
0.0504500000,64,0x22,W,0x08 0x50 0x88 0x00 0x44
0.0508490000,65,0x22,W,0x08 0x52 0x88 0x00 0x44
0.0512480000,66,0x22,W,0x0E 0x1C 0x2E 0xC5 0xAA
0.0516940000,67,0x22,W,0x68 0x00 0x50 0x14 0x02
0.0521460000,68,0x22,W,0x79 0x00 0x00 0x00 0x00
0.0524900000,69,0x22,W,0x78 0x00 0x00 0x00 0x00
0.0528910000,70,0x22,W,0x39 0x00 0x17 0xFC 0xFF
0.0532340000,71,0x22,W,0x38 0x00 0x17 0xFC 0xFF
0.0536510000,72,0x22,W,0x39 0x00 0x17 0xFC 0xFF
0.0539950000,73,0x22,W,0x38 0x00 0x17 0xFC 0xFF
0.0544040000,74,0x22,W,0x39 0x00 0x17 0xFC 0xFF
0.0547480000,75,0x22,W,0x38 0x00 0x17 0xFC 0xFF
0.0551570000,76,0x22,W,0x39 0x00 0x17 0xFC 0xFF
0.0555010000,77,0x22,W,0x38 0x00 0x17 0xFC 0xFF
0.0561930000,78,0x22,W,0x39 0x00 0x17 0xFC 0xFF
0.0565370000,79,0x22,W,0x38 0x00 0x17 0xFC 0xFF
0.0621860000,80,0x22,W,0x39 0x00 0x17 0xFC 0xFF
0.0625290000,81,0x22,W,0x38 0x00 0x17 0xFC 0xFF
0.1159580000,82,0x22,W,0x33 0x01 0x4A 0x55 0x02
0.1181010000,83,0x22,W,0x33 0x00 0x4B 0x55 0x02
0.1184450000,84,0x22,W,0x32 0x00 0x4B 0x55 0x06
0.1196360000,85,0x22,W,0x33 0x00 0x4B 0x55 0x02
0.1217450000,86,0x22,W,0x33 0x00 0x4B 0x55 0x02
数据完整无误,与手册上的一致。
研究手册发现:
1.发射和接收有群组ID,即下图中的DeviceID
这个东西位于头部,相当于密码,给通信加了个密,必须要双方一致才能解调包里的数据;
看到这一点,我大概清楚了,根据上面数据流的情况,可以看到,发射部分:
0.0270510000,27,0x21,R,0x44 0x00 0x00 0x00 0x00
间隔一些数据
0.0270510000,27,0x21,R,0x44 0x55 0x55 0x55 0x55
出现2次 这个就是密码,话筒的密码,最后一次的有效。
而接收端的:
0.0350870000,46,0x22,W,0x68 0x00 0x00 0x00 0x00
。。。
0.0516710000,67,0x22,W,0x68 0x00 0x50 0x14 0x02
也是2次,最后一次有效,和话筒的密码并不一致,话筒是固定的0x55, 接收端的随着频率的不同还会变化。656这个频率是上面这个。我想我把话筒的密码改了不就行了,这并不难。
于是找来一个晟矽的8脚IC MC6910,价格0.2左右吧,开始编程。具体程序我就不说了,还是一顿操作猛如虎,I2C的程序做的多了具体内容不足挂齿。总体思路是:
1,启动延时一段时间,让话筒把初始化的过程跑完进入频率跟踪状态,这时MCU会间隔几百的ms向9521读写一次频飘,并设置正确的纠正量。
2.为了不影响原MCU的通信,在这个比较长的时间里,发送正确的密码过去。所以设置一个引脚连接到SCL上,用于下降沿的中断触发,
3.在得到上述的触发点后,延迟一段时间(跳过频率跟踪通信)开始向I2C总线上发送密码。
上述操作后,查询写入的密码,已经改变,然后接收机没有任何反应;
心灰意冷,开始重新研究寄存器。
此时结合发射机的数据流,和寄存器描述,发现,在密码设置前有关闭发射操作,之后还有重置状态机的操作
然后我试着在代码中加入了这个操作:先停止发射,修改密码,重置状态机,重新发射
0.0607930000,60,0x21,R,0x40 0x00 0x00 0x55 0x20//停止发射
0.0530820000,52,0x21,R,0x44 0x00 0x50 0x14 0x02//修改密码
0.0549620000,54,0x21,R,0x34 0x00 0x00 0x52 0x40
0.0559830000,55,0x21,R,0x34 0x00 0x00 0x52 0xC0//重置状态机
0.0607930000,60,0x21,R,0x40 0x00 0x00 0x55 0xA0//启动发射
执行后,奇迹出现了。。。
接收机上显示了接收信号强度指示。而且敲击话筒也显示话筒信号的指示。
然而,。。并没有声音出来。检查接线无误,音频通道的状态完好,判定是9522这个ic没有发声。
继续研究。
尝试修改了很多寄存器无果,时间已经过去2天。。眼看就要成功,就差一点点。
偶然间我看到话筒端启动发射的文档中的值为00 00 93 A0
而实际发送的值是; 0x00 0x00 0x55 0xA0
遂尝试将0x55改成了0x93写入,只听彭的一声,对于音响就是噪音,然而对于现在的我,堪称完美。本次尝试结束。
其实真实的情况要曲折得多,比如原MCU的I2C信号电平上拉很强,无法正常插入的问题,比如接收机频率不同密码会变化的问题,还有晟矽的单片机入栈和出栈间隔导致SCL高低电平不对称的问题等等,不过还好都已经完美解决了。
特将此曲折的过程分享给喜欢折腾的同类人,此致。