搜索
bottom↓
回复: 66

MSP430 FSK调制与解调(单片机与host通过音频通信)

  [复制链接]

出0入0汤圆

发表于 2013-1-12 11:35:48 | 显示全部楼层 |阅读模式
本帖最后由 panwenjian 于 2013-1-12 11:37 编辑

分享我的东西。赚点莫元。

http://player.youku.com/player.php/sid/XNDc2NzA3NTI0/v.swf
上面的视频是完成后的测试。用两个MSP430板子,一个产生不断循环的a-z字母UART输出的FSK信号,另一个收到信号后解调成UART字符最后输出到串口终端。两个板子使用同一份代码。
串口设置为波特率300,8N1

制作Hijack的关键一步是在MSP430上实现FSK的调制与解调,这样到时候Hijack与手机(或电脑)连接的时候,手机的音频输出(FSK调制)才能被Hijack正确解码,Hijack产生的输出音频信号也是FSK调制信号,手机上做软件解调。

下面简要记录一下原理:
1. 调制:    P3.4 脚UART信号输出 -> P1.3沿触发中断 -> P1.7 由timer A上升沿到下降沿产生1180HZ的方波,下降沿到上升沿产生980HZ方波。 即1180HZ表示‘0’,1180HZ表示‘1’
2. 解调:    P2.3 输入需要解调的信号 -> P1.2 上升沿或下降沿产生中断判断频率,根据频率产生URAT信号 -> P3.5 UART信号输出


具体可以参考TI的这篇文章“MSP430 Embedded Soft-Modem Demo”。
代码也可以从TI网站上下载过来借鉴,不过当然需要修改了。
代码(IAR工程)分享在这:


如果有童鞋实现了曼彻斯特编码,也希望来分享。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-1-12 12:07:56 来自手机 | 显示全部楼层
这是不是手机刷卡,类似拉卡拉用的技术?

出0入0汤圆

 楼主| 发表于 2013-1-12 12:49:14 | 显示全部楼层
inkfish321 发表于 2013-1-12 12:07
这是不是手机刷卡,类似拉卡拉用的技术?

是的,就是这个东西

出0入0汤圆

 楼主| 发表于 2013-1-12 12:52:04 | 显示全部楼层
panwenjian 发表于 2013-1-12 12:49
是的,就是这个东西

host部分相对来说调试啥的会方便很多,因为可以先在PC上走通。
初步的想法是不用写任何代码,直接将Hijack的输出导入到电脑麦克风并录音就可以得到字母输出的音频文件(链接在这儿,a-r.wav,录了十几秒,刚好录到字母a-r,有需要的童鞋请拿去)。然后将这得到的wav文件重新放出来,并用音频线输入到Hijack的输入端就可以验证整个音频传数据的链路是不是真正可以工作了。
(值得注意的是,电脑的麦克风输入得把一切优化的选项--比如噪声滤波--之类的去掉,否则有用的音频输入信号可能会被滤掉)
当然了,一番折腾以后事实证明这是个好方法。
下面的视频是实验的结果:
http://player.youku.com/player.php/sid/XNDk0NjgyMjM2/v.swf
信号输出是P1.7,到PC麦克风输入的电路如下:

PC音频播放的时候音频输出到MSP430的电路如下:


另外,在调试的过程中找到了很好的两个软件:
一个是开源的Audacity,是音频编辑分析的绝好工具:

另一个是Soundcard scope,声卡示波器

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2013-1-12 12:57:21 | 显示全部楼层
PC端FSK实时解码
移植到android就可以实现单片机MSP430到手机的通信了

实时从麦克风读取数据进行解码,用一个现成的MP3压缩代码修改过来。
代码打包在这,用的是VS2005开发环境。

记一点心的:
1. 采样频率是44100HZ,有符号16bit PCM编码,双通道
2. 读取的数据是16bit的PCM数据流,所以最大值是32767,得到的16位数据除以32767就是普通的浮点表示。
3. 如果是两通道的话,数据流是Ch1_sample_n,Ch2_sample_n,Ch1_sample_n+1,Ch2_sample_n+1,... 顺序排列的。两通道一样,所以只取一路即可。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-1-12 13:03:06 | 显示全部楼层
很详细啊,多谢楼主分享,又几乎尝试一下

出5入8汤圆

发表于 2013-1-12 13:51:59 | 显示全部楼层
楼主很给力啊!是仿照国外那个hijack搞出来的吗?

出0入0汤圆

发表于 2013-1-12 14:20:15 | 显示全部楼层
能看看你的PC机上的程序吗,好奇你是怎样将数据转换为a到z的,至少同一个a,对应的采样的数据,可能就有部分不一样。

出0入0汤圆

发表于 2013-1-12 14:21:26 | 显示全部楼层
还有就是,如果你只发一个字符,然后等待1s,在另外1个字符,得到的采样数,和连续不停的发,一样不?

出0入0汤圆

 楼主| 发表于 2013-1-12 19:00:07 | 显示全部楼层
anning 发表于 2013-1-12 13:51
楼主很给力啊!是仿照国外那个hijack搞出来的吗?

是的,那篇论文很详细。

出0入0汤圆

 楼主| 发表于 2013-1-12 19:00:43 | 显示全部楼层
maimaige 发表于 2013-1-12 14:20
能看看你的PC机上的程序吗,好奇你是怎样将数据转换为a到z的,至少同一个a,对应的采样的数据,可能就有部 ...

PC上的接收程序上面帖子已经给出了。

出0入0汤圆

 楼主| 发表于 2013-1-12 19:05:42 | 显示全部楼层
maimaige 发表于 2013-1-12 14:21
还有就是,如果你只发一个字符,然后等待1s,在另外1个字符,得到的采样数,和连续不停的发,一样不? ...

一样的,对单片机到PC的通信,单片机是通过硬件中断实现的,所以空闲时候是一个频率,有数据是产生FSK信号,PC端对信号分析就可以了。对于PC到单片机的通信,组好每个字符UART信号的FSK信号播放就可以了。
最后解调的信息还得通过UART再验收一次。不过在我实际测试中还碰到不少误码的情况。业余时间有限,还没来得及深入调查。

出0入0汤圆

发表于 2013-1-12 21:16:50 | 显示全部楼层
你好,早就看到过你的博客文章了,我没有东西产生FSK信号啊,,记得你写过一个能解wav文件的程序,能不能把wav文件和程序让我研究一下,感谢!

出0入0汤圆

发表于 2013-1-12 21:36:16 | 显示全部楼层
看着不错,顶顶吧

出0入0汤圆

发表于 2013-1-12 22:09:43 | 显示全部楼层
以前Z80单板机关一功能是磁带转录程序,然后还能转回来,真是异曲同工。

出0入0汤圆

 楼主| 发表于 2013-1-13 09:25:27 | 显示全部楼层
hongfadg 发表于 2013-1-12 21:16
你好,早就看到过你的博客文章了,我没有东西产生FSK信号啊,,记得你写过一个能解wav文件的程序,能不能把 ...



里面有个a-r.wav,还有a-r的PCM数据的大数组

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-1-14 00:00:02 | 显示全部楼层
panwenjian 发表于 2013-1-13 09:25
里面有个a-r.wav,还有a-r的PCM数据的大数组

谢谢啊,够我研究很长时间了

出0入0汤圆

发表于 2013-1-15 15:02:01 | 显示全部楼层
没有数据通讯的时候,你的主机会发送固定频率的信号吗?我觉得手机从启动发送到音频左右声道上测了波形,好像会有几个周期的损失,有部分信号没有发送出来。
另外这个波特率有点低,如果用在U盾上估计要乘10才有可能够用。

出0入0汤圆

发表于 2013-1-15 15:39:05 | 显示全部楼层
拉卡拉 是这样的原理吗  我也玩玩

出0入0汤圆

 楼主| 发表于 2013-1-17 21:22:44 | 显示全部楼层
djj334396514 发表于 2013-1-15 17:53
实用的方法是改变编码方式

是的 改成曼测斯特编码,Hijack就是这么做的

出0入0汤圆

 楼主| 发表于 2013-1-17 21:23:30 | 显示全部楼层
pldjn 发表于 2013-1-15 15:02
没有数据通讯的时候,你的主机会发送固定频率的信号吗?我觉得手机从启动发送到音频左右声道上测了波形,好 ...

不会。那样的话相当于UART得到都是低电平或高电平,关系也不大。

出0入0汤圆

发表于 2013-1-19 15:07:26 | 显示全部楼层
楼主很厉害,学习下

出0入0汤圆

发表于 2013-1-19 15:22:42 来自手机 | 显示全部楼层
强力支持!!

出0入0汤圆

发表于 2013-3-25 23:12:15 | 显示全部楼层
mark mark

出0入0汤圆

发表于 2013-4-15 09:31:35 | 显示全部楼层
有意思 啊的

出0入0汤圆

发表于 2013-5-13 00:21:58 | 显示全部楼层
没有看完,标记一下。

出0入0汤圆

发表于 2013-5-14 09:55:34 | 显示全部楼层
我想问一下,你这个一个板子输出的FSK信号是否经过滤波过后输入另一个板子中

出0入0汤圆

发表于 2013-5-22 13:14:19 | 显示全部楼层
pldjn 发表于 2013-1-15 15:02
没有数据通讯的时候,你的主机会发送固定频率的信号吗?我觉得手机从启动发送到音频左右声道上测了波形,好 ...

实用 会有前导码的

出0入0汤圆

发表于 2013-5-27 14:26:35 | 显示全部楼层
说不定什么时候有用

出0入0汤圆

发表于 2013-7-9 16:44:14 | 显示全部楼层
多谢楼主分享~~
向热于分享所学所得滴银致敬!

出0入0汤圆

发表于 2013-7-17 23:29:36 | 显示全部楼层
莫兄, 买一套Hijack要多少RMB?

出0入0汤圆

发表于 2013-7-17 23:30:31 | 显示全部楼层
panwenjian , 买一套Hijack要多少RMB?

出0入0汤圆

发表于 2013-7-21 13:43:12 | 显示全部楼层
好东西,谢谢

出0入0汤圆

发表于 2013-7-31 10:51:47 | 显示全部楼层
不错 学习中

出0入0汤圆

发表于 2013-8-22 23:23:18 | 显示全部楼层
解调的信号来源为什么一定更要使用uart呢?

出0入0汤圆

发表于 2013-8-27 19:45:47 | 显示全部楼层
panwenjian 发表于 2013-1-12 12:52
host部分相对来说调试啥的会方便很多,因为可以先在PC上走通。
初步的想法是不用写任何代码,直接将Hijac ...

你好楼主,我有个问题不解,我用UART发送一个字符,UTXD0会输出一串包含1个起始位,8个数据位,1个停止位的比特流,而后p1.3中断检测下降沿的时候只能检测到一个下降沿就结束了,是什么原因?

出0入0汤圆

发表于 2013-8-27 20:12:32 | 显示全部楼层
没有接触过,标记下。

出0入0汤圆

发表于 2013-8-29 10:21:14 | 显示全部楼层
有点意思 谢谢哈 ,决定收下来,我在用曼切斯特编码改天也分享

出0入0汤圆

发表于 2013-9-4 21:23:27 | 显示全部楼层
看一下。。。

出0入0汤圆

发表于 2013-9-4 21:40:06 | 显示全部楼层
音频口通信,不错

出0入0汤圆

发表于 2013-9-29 20:57:19 | 显示全部楼层
好东西,支持一下

出0入0汤圆

发表于 2013-9-30 15:49:51 | 显示全部楼层
不错,学习学习

出0入0汤圆

发表于 2013-10-25 09:11:06 | 显示全部楼层
zuoqiangavr 发表于 2013-8-29 10:21
有点意思 谢谢哈 ,决定收下来,我在用曼切斯特编码改天也分享

你好,我最近也在研究这个东西,有些问题还不太懂,希望跟你交流下,多谢,能加我的企鹅吗:405700434

出0入0汤圆

发表于 2013-10-29 20:07:18 | 显示全部楼层
感谢楼主分享,真的很受启发,很好的思路

出0入0汤圆

发表于 2013-11-26 17:47:34 | 显示全部楼层
标记一下,谢谢楼主!

出0入0汤圆

发表于 2013-11-26 17:59:13 | 显示全部楼层
非常棒的东西。谢谢楼主

出0入0汤圆

发表于 2013-11-26 19:23:54 | 显示全部楼层
感谢楼主分享,收藏了!

出0入0汤圆

发表于 2013-11-26 19:39:20 | 显示全部楼层
正在做 曼彻斯特编码 不过是FPGA做的 没有调制

出0入0汤圆

发表于 2014-3-5 13:11:37 | 显示全部楼层
新浪上看到你的微博,写得很好,我在改进中。

出0入0汤圆

发表于 2014-3-5 13:18:26 | 显示全部楼层
感谢楼主分享,收藏

出0入0汤圆

发表于 2014-4-2 15:34:08 | 显示全部楼层
刚好要找这个。。。谢谢楼主分享了。。。

出0入0汤圆

发表于 2014-5-5 13:50:51 | 显示全部楼层
你好 我下了你的程序那个abcd-test程序没有在P1.7测得或者P3.4测得FSK信号 这是怎么回事呢?

出0入0汤圆

发表于 2014-5-17 22:50:08 | 显示全部楼层
不错,学习良多。。

出0入4汤圆

发表于 2014-5-18 00:20:04 | 显示全部楼层
MSP430 FSK调制与解调,以后会用到

出0入0汤圆

发表于 2014-5-21 21:07:23 | 显示全部楼层
正是我要找的资料,谢谢楼主分享

出0入0汤圆

发表于 2014-7-7 21:12:53 | 显示全部楼层
网上能找到TI的slaa204的源文件,没有找到Hijack的MSP430源文件?

出0入0汤圆

发表于 2014-10-15 22:01:38 | 显示全部楼层
终于找到想要的东西了

出0入0汤圆

发表于 2014-10-15 22:23:55 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2014-10-18 11:27:40 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2014-11-1 17:35:28 | 显示全部楼层
支持分享!

有个小白的问题。。PC端解码的代码是对什么文件解码?或者说单片机发出的信号在PC端或者手机端是(.wav/.mp3)这样的音频文件吗?

出0入4汤圆

发表于 2014-11-25 10:41:00 | 显示全部楼层
最近正在研究这方面的应用,

出0入0汤圆

发表于 2015-5-29 22:15:15 来自手机 | 显示全部楼层
在研究这个通讯方法

出0入0汤圆

发表于 2015-9-1 21:00:19 | 显示全部楼层
速度传输好慢啊

出20入62汤圆

发表于 2015-9-1 21:32:48 | 显示全部楼层
mark一下啊  MSP430 FSK调制与解调(单片机与host通过音频通信)

出0入0汤圆

发表于 2015-9-1 22:54:51 | 显示全部楼层
以前用AVR做过FSK没成功,看看楼主的学习学习.

出0入0汤圆

发表于 2015-10-13 14:34:47 | 显示全部楼层
我来了,抽空研究

出0入4汤圆

发表于 2016-11-24 21:46:26 | 显示全部楼层
再看一次这个帖子。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-8 07:37

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表