基于音频接口的数据传输模块设计
1 数据传输模块的结构设计
接口是智能终端系统与外界的连接电路,具有如下功能:(1)寻址能力。对送来的片选信号进行识别。(2)输入/输出功能。根据读/写信号决定当前进行的是输入操作还是输出操作。(3)数据转换功能。并行数据与串行数据的转换或两种不同数据格式之间的转换。(4)信号识别。识别就绪信号、忙信号等。(5)中断管理。发出中断请求信号、接收中断响应信号、发送中断类型码的功能。(6)复位。接收复位信号,从而使接口本身以及所连的外设进行重新启动。(7)可编程。用软件来决定其工作方式,用软件来设置有关的控制信号。(8)检测信息。一些接口还可根据具体情况设置其检测信息。
基于音频输入输出接口的数据传输方法可以弥补数据接口不一致的缺点,并扩充音频接口的应用。在实现传输音频模拟信号的系统上交换数字信号,设计难点是如何通过模拟信号进行数据通信,需要专门设计一种严格的通信机制或通信协议,保证基于手机音频输入输出接口的数据传输可靠。
如果把终端作为主导装置,由其产生位时钟信号、命令选择信号和数据,但在综合系统中,识别发送端比较困难。设计采用差分曼彻斯特编码的数据传输协议,开发了可下载手机软件,并为外设存储设备设计了实现编解码及传输协议的嵌入式系统。模块结构示意如图1所示。
外部装置通过音频输入输出接口与智能终端进行数据通信,数据信号在主控模块中进行编解码处理,再通过控制装置读取、写入外部介质,并存储数据。数据传输的具体方式中,外设装置通过插入手机外置话筒音频输入接口或音频线路输入接口的连接线发送数据信号给手机,外设装置通过插入手机的外置耳机音频接口或音频线路输出接口的连接插线,接收手机发送出的数据信号。
2 数据传输模块的硬件设计
外部数据传输装置由滤波电路、主控模块、编解码电路、读写装置组成。滤波电路分离固定频率交流信号与数据信号;读写装置包含一个标准曼彻斯特编解码电路,读写解码电路采用BS730Q读写专用解码芯片,采用单轨道读写;实现的主控模块电路选用低功耗的ARM微控制器,内部有可编程工作寄存器,可以方便地与主机通信,但要有自己的数据协议,主控模块对双向信号进行编解码处理的过程是:(1)主控电路模块将读写装置传入的曼彻斯特编码数据信息解码成国标数据,再编码为差分曼彻斯特编码数据信号,送到连接手机话筒接口或线路音频输入接口的传输线上。(2)主控电路模块从连接手机耳机接口或线路音频输出接口的传输线上接收差分曼彻斯特编码数据信号,解码成国标数据,再编码为标准曼彻斯特编码数据信息,送入读写装置。电路设计如图2所示。
3 数据传输模块的软件设计
3.1 设计线程
通信双方的手机终端采用软件方法实现,结构如图3所示。通过程序对从音频输入接口采集到的音频信号进行差分曼彻斯特解码,并送到音频输出接口,程序由3个线程构成,当数据传输服务程序在手机上启动后形成3个线程:(1)创建一个音频交流发送线程,负责设置输出最大音量,生成固定频率音频交流信号并发送到音频输出线路上。(2)创建一个监听音频输入接口数据的线程,负责对从音频输入接口采集到的音频信号,进行差分曼彻斯特解码,解码输出数据存放在接收数据缓存,通过调用外部业务程序注册的回调函数,通知外部业务程序注册取得传入的数据。(3)主线程循环等待发送数据缓存中的数据存入事件,当外部业务程序在数据要发送时,将要发送的数据放入共享的发送数据缓存时,数据存入事件发生,所述的主线程取到要发送的数据,进行差分曼彻斯特编码,再用操作系统的音频控制接口函数发送到音频输出接口。
3.2 数据格式
音频输入输出线路上传输的数据信号采用差分曼彻斯特编码,不进行载波调制与解调,直接在音频线路上传输数据编码信号。具体协议机制如下:
(1)基于音频输入输出接口的数据传输方法是一种串行通讯方法,参考标准同步串行通讯协议,采用差分曼彻斯特编码,其特点为每发送一位至少有一个跳变,以适应在只能传输交流的音频输入输出线路上传输数据。通信信号中使用中间时刻的跳变来表示发送的0或1,第一个跳变的如果是正跳变表示1,如果是负跳变表示0,之后的跳变与前一个跳变进行差分,由相比较的结果决定是1或0,如果当前位跳变方向与前一位的跳变方向相同,则表示为0,否则表示为1。采用差分曼彻斯特编码,通信双方的同步允许差半位时间,同步差半位时间内接收的数据也不受影响。
(2)数据传输是双工方式,从手机输出数据的传输使用音频输出线路,进入手机的数据传输使用音频输入线路,发送数据前让总线空闲准备,提示接收方做好接收准备。总线空闲准备是用连续发送8位以上的0来表示。
(3)串行通讯采用帧起始标志进行同步,帧起始可以从任意一位开始,串行通讯的帧起始标志采用与标准串口通信同步中一样的标识,即连续发送6个1,即发送字符0x7e表示发送了帧起始标志。
(4)串行通讯采用帧结束标志表示本次数据发送结束,进入总线空闲状态。连续发送7个1,即发送字符0x7f表示发送了帧结束。串行通讯中,线路上传输的数据的单位为位,发送Byte时首先发送最高位,最后发送最低位,发送数据时字节间没有间隔。发送数据时,数据中很可能有连续的6个1,这与帧起始标志和帧结束标志相同,会造成通讯歧义。为消除歧义,规定当发送数据时,连续发送5个1后,必须发送一位无效的0,再接着发送其他数据。而接收到连续的5个1后,需要删除接着收到的0。这连续的5个1并非一定在1个Byte中,例如,两个Byte 0x0f和0xc0,每个Byte都没有连续的5个1,但先发送0x0f后发送0xc0时,就有连续的5个1了,需要动态插入、删除一位0。
(5)所述基于音频输入输出接口的串行通讯中,编码信息流一般以块形式表示,一个信息流块包含:块头和块负载信息,线路上传输的数据帧格式如图4所示。
- 常见音频接口汇总(12-13)
- 数码音频接口介绍:不同音频接口功能各异(12-13)
- 基于ARM的音频接口数据传输模块设计(04-08)
- 基于 DSP-dMAX 的嵌入式 FIFO 数据传输系统设计(04-11)
- McBSP技术在数据传输中的应用(10-23)
- 基于DSP-dMAX 的嵌入式 FIFO 数据传输系统设计(11-27)