SigmaStudio之Sine Tone的Freq\Ison换算

在这里插入图片描述

/*************************************************************************
** Function name: read_sine_control(uint32_t controlAddress)
** Descriptions:读取Freq,isOn
** input parameters:controlAddress增益控件参数基址,返回的数组明细。
** Returned value:void
******************************************************************************/
void read_tone_control(uint32_t controlAddress,float arrayf)
{
uint32_t arrayi[2]={0};
arrayi[0]= Adi_DSP_ReadValue(controlAddress);//cos
arrayi[1]= Adi_DSP_ReadValue(controlAddress+2);//ison
int_2_float(&arrayf[0],arrayi[0]);//再转换相应的Freq
arrayf[0]=(DFS
acos(arrayf[0]))/ANGLE;//反余弦获取Freq
int_2_float(&arrayf[1],arrayi[1]);
}

/**********************************************************************************
** Function name: write_delay_control(uint32_t controlAddress,float gain)
** Descriptions:写音频正弦/查找
** input parameters:controlAddress增益控件参数地址,Freq,ison值
** Returned value:void
********************************************************************************/
void write_tone_control(uint32_t controlAddress,float freq,uint8_t ison)
{
float arrayf[3]={0};
uint32_t arrayi[3]={0};
if(freq>DFS) {freq=DFS;}
else if(freq<20) {freq=20;}
else{}
arrayf[2]=ison>0?1.0f:0.0f;
arrayf[0]=freq*ANGLE/DFS;
arrayf[1]=sin(arrayf[0]);
arrayf[0]=cos(arrayf[0]);
float_2_int(arrayf[0],&arrayi[0]);
float_2_int(arrayf[1],&arrayi[1]);
float_2_int(arrayf[2],&arrayi[2]);
Adi_DSP_WriteValue(controlAddress,arrayi,3);
}

换算公式参考来源:http://wiki.analog.com/resources/tools-software/sigmastudio/toolbox/Sources/SineTone

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值