https://e2e.ti.com/support/audio-group/audio/f/audio-forum/629928/tlv320dac3120-tone-generator-issue
部件号:TLV320DAC3120大家好,我正在使用TLV320DAC3120并尝试使用蜂鸣器(PRB_P25)为所选频率(参数FHz)生成纯正弦波,我有其他模式从PIC32发送I2S (使用内部PLL在板上配置FS=48kHz时,效果很好) 但在这个模式下,我想用音频板生成正弦波,并重复使它持续播放,直到其中一个参数发生变化。
我按照数据表中的说明进行了计算和配置,我还检查了发送到寄存器的值,并将它们与固定示例进行了比较,结果看起来是正确的:
UINT8_t match_Config[10][2];//{Register address,Register value} AppData.match.sine = floor (sin (2 * M_PI * FHz)/(4.8万)*(pow (2,15))); AppData.match.cosine = floor (cos (2 * M_PI * FHz /(4.8万))*(pow (2,15))); appData.MATCH.beepLength = floor ((4.8万)* 1000 / fHz);//1000个周期 Match_Config[0][0]= 0x00;//选择页面0 match_Config[0][1]= 0x00; match_Config[1][0]= 0x49; Match_Config[1][1]=(int)((appData.MATCH.beepLength)和0xff);//注册73 match_Config[2][0]= 0x4A; Match_Config[2][1]=(int)((((appData.MATCH.beepLength)>> 8)和0xff);//注册74 match_Config[3][0]= 0x4B; match_Config[3][1]=(int)((((appData.MATCH.beepLength)>> 16)和0xff);//注册75 match_Config[4][0]= 0x4C; Match_Config[4][1]=(int)(((AppData.Match.Sine)>> 8));//注册76 -正弦MSB Match_Config[5][0]= 0x4D; Match_Config[5][1]=(int)(((AppData.Match.Sine))和0xff);//注册77 -正弦LSB match_Config[6][0]= 0x4E; Match_Config[6][1]=(int)(((AppData.Match.cosine)>> 8));//注册78 - cosine MSB match_Config[7][0]= 0x4F; Match_Config[7][1]=(int)(((AppData.Match.cosine))和0xff);//注册79 - cosine LSB //如数据表中所述的卷,与二进制值表(第68页REG 65)对应 match_Config[8][0]= 0x41; Match_Config[8][1]= 0x00;//AppData.Match.volume;第0页注册65 match_Config[9][0]= 0x47; Match_Config[9][1]= 0x80;//Page 0 Reg 71 0x80 (beepr的最大卷) /*通过I2C */发送 I2C_Transmit ((sizeof (match_Config)/ 2),match_Config);
当我探测结果时(例如FHz=200Hz),我得到一个320Hz的方波,而不是正弦波:
我为什么会得到这一错误结果? 使用PurePath Studio I输出,使用"ToneGenerator"模块和探针,我获得完美的正弦波。
此致,
EE学生。