设计应用技术
字为0x80。每个数据字之前先发一位“0”表示起始位,数据字结束后发一位“1”表示停止位,这样每个数据字实际发送10位bit。FSK消息类型定义如表2所示。
表1 FSK来电显示消息帧格式
单帧数据格式复帧数据格式
信号占用信号信号占用信号
标志信号标志信号
消息类型消息类型
标志位(0~10)标志位(0~10)
消息长度消息长度
标志位(0~10)标志位(0~10)
消息字参数长度
更多消息字标志位(0~10)标志位(0~10)参数字
校验字更多的参数字
—更多的参数消息
—标志位(0~10)
—更多的消息
—校验字
表2 FSK消息类型定义
值含义数据消息类型00000100(0x04)主叫号码传送信息单数据格式10000000(0x80)呼叫建立复合数据格式其他备用备用
消息长度中,消息长度字为消息体中所有消息数据的总数目。参数类型中,参数类型值从0x00~0xff 可定义255种不同特征的参数,FSK参数类型定义如表3所示[4]。参数长度为参数体中参数字的数目,用16进制表示,值为0x00~0xff。
表3 FSK参数类型定义
值含义
00000001(0x01)呼叫时间
00000010(0x02)主叫号码
00000100(0x04)无主叫号码
00000111(0x07)主叫姓名
00001000(0x08)无主叫姓名
其他备用
2 系统总体设计方案
2.1 总体方案
系统总体设计方案如图1所示。该系统设计方案采用GD32为核心控制处理器,通过一定的软件算法产生
所需的正弦波数据,将正弦波数据通过直接内存访问(Direct Memory Access,DMA)方式同数字模拟转换器(Digital to Analog Converter,DAC)相关联,同时利用定时器按照约定的时间去触发DAC完成数字信号到模似信号的转换。该约定的时间实质上就是正弦波的频率,只需改变定时器的定时时间,就可以得到FSK来电显示中所需要的1200 Hz载波信号和2200 Hz的载波信号,即图1中的载波1和载波2,同时用定时器在基带码元的控制下,就可以调制载波信号为一连串的FSK来电显示所需的模拟信号,即图1中的2FSK,把这个调制出来的模拟信号直接送往电话线路,相应的电话机上就可以显示出FSK来电显示的主叫号码、呼叫时间、呼叫日期等相关信息内容。
生成正弦
波数据
DMA DAC
存储触发
传输
取数据
定时器定时器
基带控制
载波1
载波22FSK电话线路
图1 系统设计框图
2.2 波形数据产生
正弦波数据的产生,使用正弦函数生成正弦波数据表存放于数组Sine12bit[128]中,采样点数为128位,采样点数越大,经DAC模块转换后输出的正弦波波形也就越逼真。在实际调试中,本设计分别使用64位和128位采样点数试验,均能满足设计需要,实测下来,128位采样点数的波形要明显优于64位采样点数的波形,正弦波数据产生代码为
B=PARAMETER.Integrated_Parameters.SineWave_ GAIN;
A=(4096*B)/330;
for (i = 0; i < 128; i++)
{
Sine12bit[i] = A+A*sin(2*3.1415926f*i/128);
}
其中,参数B用来控制正弦波峰峰值,可通过个人计算机(Personal Computer,PC)管理系统实时调整配置,因本设计方案中DAC模块为12位精度,处理器工作电压为直流3.3 V,所以参于计算变量A 的数值里有4096和330(12位精度最大值为212=4 096)。在正弦波数据生成时,利用乘变量A和加变量A,解决输出正弦波因DAC模块无法输出达到0而导致的正弦波信号失真问题,同时可以防止峰峰值超过最大精度,正弦波数据整体抬升和最大精度控制从根本上解决了信号失真问题。
2.3 DMA模块
直接内存存取(Direct Memory Access,DMA)模块的作用就是不经过中央处理单元(Central Processing Unit,CPU)就可以直接同内存数据进行交换,无须处理器干预,数据通过DMA可快速交互,可较大地节约处理器资源,提高处理器的工作效率。本设
· 11 ·
Cortex-M 3 核心
Flash 接口控制器
复位和时钟 控制(RCC )
桥2
桥1
ADC 1ADC 2USART 13Pl 1TIM 1GPIOA GPIOB
DAC
PWR
BKP
CAN 1
CAN 2
I 2C 2
I 2C 1
UART 5
UART 4
姓名代码转换器百度USART 3
USART 2
GPIOC GPIOD GPIOE EXTI AFIO
SPI 3/I 2S SPI 2/I 2S IWDG WWDG RTC TIM 7TIM 6TIM 5TIM 4TIM 3TIM 2APB 1
APB 2
Flash
SRAM
总
线矩阵
ICode
D M A
D M A
通道1通道2
通道7
DCode 系统
DMA
通道1通道2
通道7
DMA 1
DMA 2
仲裁器
仲裁器
AHB 从设备DMA 请求
DMA 请求
AHB 从设备
以太网 MAC USB OTG FS
图2 DMA 功能框图
· 13 ·
据信息为
const u 8 FskTxdNumber [20]={0x 04,0x 12,0x 31,0x 30,0x 31,0x 37,0x 31,0x 35,0x 33,0x 31,0x 39,
0x 38,0x 37,0x 36,0x 35,0x 34,0x 33,0x 32,0x 31,0x 30};
其中数组首位字节0x 04表示单帧数据格式,第二字节0x 12转成十进制为18,表示后续数据长度为18个字节,紧随其后的8个字节表示月日时分,再后面10个字节表示号码9876543210。FSK 来电显示发送软件流程如图6所示。
软件周期性判断是否有FSK 来电显示需要发送,若有,则进入发送信道占用状态机,处理信道占用信号的发送,即发送0x 55信号。到达信号占用发送时间,继续发送标志信号,即一连串“1”。到达标志信号时间后,则发送消息数据,消息数据来自数组FskTxdNumber [20],消息数据发送完成之后,接着发送检验和,检验和为消息所有数据相加后取反再加1,即补码。发完校验后,发送结束,等待下一次发送[5]。发送软件部分源代码为
void Fsk_TxdFrame_Process(void){//发送FSK 来显--核心代码 if(FSK_SEND_FLAG) {
if(FSK_TXD_STATUS==0)
{//发送信道占用-约) Fsk_Txd_55_Process(); }
sWTR IGx TIM 2_TRGO TIM 4_TRGO TIM 5_TRGO TIM 6_TRGO TIM 7_TRGO TIM 8 TRGO(1)
DMA 请求
TENx
MAMPx [3:0]位 WAVENx [1:0]位
DAC_OUTx
V DDA V SSA V REF+
TSELx [2:0]位
DHRx
触发选择x
DORx
数字至模拟 转换器x
控制逻辑
LFSRx
trianglex
12位
12位
12位
DMAENx
DAC 控制寄存器
EXTI_9
图3 DAC 功能框图
初始化处理
833US 时间到
FSK 发送处理
结束
图4 定时器处理框图
载波1(2 200 Hz )
基带信号
控制单元
1载波1载波2载波1
载波2
1
00
载波2(1 200 Hz )
调制后的2FSK 信号,也就是需要的来电显示信号
图5 FSK 来电显示调制框图
初始化处理
有FSK 发送信道占用处理
标志信号处理
消息数据处理
校验和处理
发信道占用(状态机)发标志信号(状态机)发标志数据(状态机)发送校验和(状态机)结束
否
否否
否
否
是
是
是
是
是图6 FSK 发送软件流程
论
文章对GD 32实现的FSK 制式的来电显示软发
号设计进行探索,完全通过MCU 中的软件处理的方法来完成了FSK 来电显示软发号的设计与实现。该设计不但能够解决电话中DTMF 来电显示因环境或部分话机来显兼容问题而导致的少号和漏号问题,而且对于节约硬件生产成本、理解FSK 来电显示原理有一定的帮助。本设计稍作修改,将2 200 Hz Hz 频率更改,则可实现任易频率的2FSK (a )FSK 实测波形
(b )2FSK 波形
(c )话机来显实测结果
图7 FSK 来电显示信号实测波形和话机显示结果
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论