DSP TMS320C5509A 控制DDS AD9854芯片进行AM-MSK调制
接https://blog.csdn.net/pxy198831/article/details/87017571DSP TMS320C5509A 控制DDS AD9854芯片进行AM幅度调制
AM-MSK调制是MSK的变种,用于航空ACARS通信。
以1200Hz表示数据位和前一位不同,2400Hz表示数据位和前一位相同。两种高低频率的相位连续。
由于传送速率为2400Hz,传输一位数据2400Hz的调制信号是一个周期的波形,而1200Hz则是半个周期的波形。
由于起始相位不同,0,1分别对应4种不同的情况,这样做的好处是能够保证相位连续。
2400Hz和1200Hz的ROM表可以用MATLAB生成,可以生成通用的也可以根据采用频率生成
专用的ROM表,具体看代码。
interrupt void dmaCh0Isr(void)
{int I_Q_result;static int AM_MSK24[18]={0,12062,22430,29648,32702,31166,25248,15788,4106,-8149,-19261,-27666,
-32188,-32188,-27666,-19261,-8149,4106};static int AM_MSK12[34]={0,6141,12062,17557,22430,26509,29648,31739,32702,32509,31166,
28715,25248,20886,15788,10125, 4106,-2058,-8149,-13953,-19261,-23888,-27666,-30468,-32188,-32678,-32188,-30468,-27666,-23888,-19261,-13953, -8149,-2058};static int AM_MSK_DATA[10]={0,1,0,0,1,1,1,0,0,1};int ATW;static int noise_flag = 0,i_18=0,j_34=0,k_10=0;unsigned char AM_H,AM_L;static int fase=0;//unsigned int AM_register = 0;//float ac,dc;//float temp;//static int i;//long int tmp;//处理接收到的事情
// dmaCh0Process();//Read the DMA status register to clear it so new interrupts will be seenDMA_RGETH(hDMACH0,DMACSR);DMA_start(hDMACH0); /* Begin Transfer */// head++;*/if (dds_flag == 1){if(k_10==10){k_10=0;}if ((j_34==17)||(j_34==34)){j_34=0;k_10++;} if (i_18==18){i_18=0;k_10++;}if (k_10 == 0){if(AM_MSK_DATA[k_10]==0){I_Q_result = AGC_audio(AM_MSK12[j_34]);}else{I_Q_result = AGC_audio(AM_MSK12[j_34+17]);}j_34++;}else{if(AM_MSK_DATA[k_10]==AM_MSK_DATA[k_10-1]){if(AM_MSK_DATA[k_10]==0){I_Q_result = 0-AGC_audio(AM_MSK24[i_18++]); }else{I_Q_result = AGC_audio(AM_MSK24[i_18++]); }}else{if(AM_MSK_DATA[k_10]==0){I_Q_result = AGC_audio(AM_MSK12[j_34]);}else{I_Q_result = AGC_audio(AM_MSK12[j_34+17]);}j_34++;}}fir((DATA *)&I_Q_result, (DATA *)B_BS,(DATA *)&I_Q_result, BS_dbuf,1,BL_BS);
// audio_DDS[Index] += 32768;// I_Q_result = 2*A*((float)I_Q_result)/(1+A);if (I_Q_result > 0){I_Q_result = ((float)I_Q_result)/8192*2048;} if (I_Q_result < 0){I_Q_result = ((float)I_Q_result)/8192*2048;}// dc = 2048;// dc = ((1-A)*0x3fff)/(1+A);// ac = (2*A*I_Q_result)/(1+A);ATW = (2*A*I_Q_result)/(1+A) + 2048;// temp = ATW;// ATW = (temp/65536)*4096;AM_H = (ATW&0x0f00)>>8; AM_L = ATW&0xff;audio_DDS[Index] = (AM_H<<8)|AM_L;if(Index>=200){Index = 0;}if (audio_DDS[Index++] > 1000){if (noise_flag<200){noise_flag++;} }else{noise_flag = 0;}if (noise_flag != 200){AD9854_WR_Byte(OSK_I1_ADDRESS,AM_H); //设置I通道幅度AD9854_WR_Byte(OSK_I2_ADDRESS,AM_L);}else{AD9854_WR_Byte(OSK_I1_ADDRESS,0xff); //设置I通道幅度AD9854_WR_Byte(OSK_I2_ADDRESS,0xff);}ad9854_update(); rear++;}
}
DSP TMS320C5509A 控制DDS AD9854芯片进行AM-MSK调制相关推荐
- DSP TMS320C5509A 控制DDS AD9854芯片进行AM幅度调制时的噪声抑制
接上一节https://blog.csdn.net/pxy198831/article/details/87017571 TMS320C5509A 控制DDS AD9854芯片进行AM幅度调制 话音调 ...
- DSP TMS320C5509A 控制DDS AD9854芯片进行AM幅度调制
接上一节https://blog.csdn.net/pxy198831/article/details/86738839DSP TMS320C5509A 控制DDS AD9854芯片驱动 各种调制中最 ...
- DSP TMS320C5509A之DMA
https://blog.csdn.net/pxy198831/article/details/86615497 DSP TMS320C5509A之ADC MAX121中的ADC芯片即是采用DMA的方 ...
- xmos驱动_XMOS推出了Xcore.ai处理器,单个设备中提供高性能AI,DSP,控制和IO,价格从1美元起!...
作者:XMOS,排版整理:晓宇 微信公众号:芯片之家(ID:chiphome-dy) 近日,英国半导体科技公司XMOS宣布推出Xcore.ai ,它是一款面向AIoT市场的超强性能跨界处理器,该处理器 ...
- FPGA控制不其他芯片
1.1 FPGA控制不其他芯片 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA控制不其他芯片: 5)结束语. 1.1.2 本节引言 "不积跬步,无以至 ...
- NPC中点箝位三电平 SVPWM控制 T型三电平 羊角波调制
NPC中点箝位三电平 SVPWM控制 T型三电平 羊角波调制 中点电位平衡 simulink仿真和c语言实现 正弦波完美
- 嵌入式STM32入门之定时器控制LED闪烁与产生PWM脉冲宽度调制信号
定时器控制LED闪烁与产生PWM脉冲宽度调制信号 一.前言 二.定时器基本介绍 (一)STM32定时器 (二)通用定时器主要功能 (三)计数器模式 (四)定时器工作原理 三.实验(1)初识定时器 (一 ...
- DSP电机控制串行通信系统电路设计_电动机控制电路图讲解
电路图简介: 分析了数字信号处理芯片TMS320LF2407A DSP的串行外设接口SPI,及串行通信接口SCI模块.在电机控制实验系统中,给出了由这2个模块构成的串行通信应用实例.重点讲述了相关的串 ...
- ds1302模块 树莓派_Arduino控制DS1302时钟芯片(ds1302引脚图及功能和应用电路)
DS1302应用电路 应用电路一: DS1302的电路一个重点就是时钟电路,它所使用的晶振是一个32.768k的晶振,晶振外部也不需要额外添加其他的电容或者电阻电路了.时钟的精度,首先取决于晶振的精度 ...
- DSP TMS320C5509A之DAC8164
DAC8164,16位四通道SPI接口DAC,发热量较大,不推荐使用,程序如下: #include <csl.h> #include <csl_mcbsp.h> #includ ...
最新文章
- Windows脚本初探之PowerShell流程控制if
- 多项目管理,研发管理,敏捷开发软件
- 进程间通信——DLL共享节
- JS系统库:预定义对象(内建对象)
- Git 添加到Git 仓库
- 深入Java -JVM 垃圾回收
- 使用线性回归识别sklearn中的手写数字digit
- 数学建模 时间序列分析
- sql关于视图的sql_学习SQL:SQL视图
- 树莓派VI命令大全(附vim使用异常,卸载重新安装步骤)
- Spring定时器corn表达式详解
- CentOS依赖包查找工具(https://centos.pkgs.org)
- java语言诞生的主要贡献者_2020年12月编程语言排行+GitHub 年度报告正式发布,JavaScript 霸榜、TypeScript 爆发!...
- 网页怎么看不到css,怎么查看网页的CSS代码?如何阅读?
- SecureCRT通过vim打开文件时显示行号
- java静态变量、静态方法、代码块、main方法
- 网安技术与应用(4)——配置iptables防御常见攻击
- vue+echarts实现省份地图展示
- 竣工验收报告主要内容
- 敏感词过滤之——自定义构建查询词库与快速查询实现
热门文章
- matlab中acos得到的弧度范围,C语言acos()函数:求余弦值为 x 的弧度数
- ubuntu 22.04 修复 key is stored in legacy trusted.gpg keyring
- 笔记本电脑计算机的配置表,笔记本组装配置清单_笔记本电脑配置单及价格
- Jquery点击事件触发多次解决办法
- android框架百大排行榜
- oracle数据库教程ppt,Oracle 数据库入门教程 PPT
- 【笔记】Android APP 上架 Google Play 采坑记之「应用签名证书」
- 90后小伙自己开发APP年赚10亿,自己开发APP需要什么工具
- 怎么把多个pdf文件合并成一个pdf?
- Global.asax 文件是什么