/*************************************************************************
** 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]=(DFSacos(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