【新版CH554评测DIY】音频校音器之9-结题
音频校音器之9-结题1、按照音频校音器的计划,需要采用快速傅里叶变换的点位和按照大量的矩阵计算。不过在程序设计的过程中,多次发现定义中间数据时就出现错误,参照手册的参数如下:“CH554 支持最高 24MHz 系统主频,内置 16K 程序存储器 ROM 和 256 字节内部 iRAM 以及 1K 字节 片内 xRAM,xRAM 支持 DMA 直接内存存取。”也就是内存最大1K字节,按照FFT的计算,128点需要至少128点x2字节x2的内存。这样在内存计算是需要非常精细的容量分配,而小于128点的采样基本上就不能捕捉到有效的采样点了。经测试,选择32点的变量定义还是可以通过编译的,但是没有测试计算结果如何。
如果确实需要这样大量计算,就需要把数据存入数据区,用数据区来计算,这样的程序复杂性和运算速度是可想而知的。因为很多芯片,FFT是用专门的库函数,或者DSP库直接计算的,因此降低计算量可以实现模拟,但是最高2kHz的程序是不能完成正确完成测试的。
所以,DIY的项目选择并不合适。
2、不过,经过极限测试,可以发现,这个CH554是非常优秀的芯片。仅就24MHz的主频来说,就已经超过MSP430 valueline的16MHz(当然这个是16位的)。因此,很多适当计算量的任务都是可以胜任的。同时,包括I2C,SPI和UART的通讯协议更是可以在小家电和基本的电机PWM控制上充分满足要求。
至于USB更是亮度,对于USB外设开发是最合适的选择,这个在上述的评测中都体现出了的。不过,不宜把全部的端口都使用起来,如touchkey+USB的编译后已经达到了9k的容量,对于16k的程序区,用户定制的功能部分,就需要更完善和巧妙的程序设计。
3. 在本项目的开发中,完成了一半的工作。
主要就是启动time,设定timer0计时,时钟中断启动ADC转换,把采样的数据输出出来。这个主要的部分写在了time.c的时钟0的中断响应程序中,
UINT16 adcfft(UINT8 dotcount)
{
UINT16 ich=0;
dotcount++;
//printf("start addfft...\n");
//printf("AIN%02x ",(UINT16)ich);
ADC_ChannelSelect( ich ); //ADC?????
ADC_START = 1; //????,????????
while(ADC_START); //ADC_START??0?,??????
printf("DATA: %08x\n",(UINT16)ADC_DATA);
//mDelaymS(100);
}
#ifdef T0_INT
/*******************************************************************************
* Function Name: mTimer0Interrupt()
* Description :
*******************************************************************************/
void mTimer0Interrupt( void ) interrupt INT_NO_TMR0 using 1 //timer0ÖD¶Ï·tÎñ3ìDò,ê1óüÄ′æÆ÷×é1
{ //·½ê½3ê±£¬TH0ê1óÃTimer1μÄÖD¶Ï×êÔ′
SCK = ~SCK;
adcfft();
// mTimer_x_SetData(0,0x0000);
}
#endif
在main.c中的有关代码
main( )
{
CfgFsys( );
mDelaymS(5);
mInitSTDIO( );
ADCInit( 0 );
printf("start ...\n");
ich=0; //ADC channel 0;
#ifdef T0_INT
// printf("T0 Test ...\n");
mTimer0Clk12DivFsys();
mTimer_x_ModInit(0,2);
//mTimer_x_SetData(0,0x5555);
mTimer_x_SetData(0,0x1770);
mTimer0RunCTL(1);
ET0 = 1;
EA = 1;
while(1);
{
};
#endif
}
显示的输出截屏为
另外有一种近似模拟的方式,这里设定采样频率为4kHz,最大可以捕捉2kHz的声音信号。采用捕捉模拟量最大值的时间间隔,然后进行时间计数,求倒数就是时钟频率。
在这个过程中,由于有程序运行时间的误差,因此计算的结果更不精确。因此没有继续,本示例项目为采用声音信号的数模转换部分,快速傅里叶变换部分没有进行。
4、后续工作
经过开发板的评测,已经具备使用CH554进行项目快速开发的条件,在合适的产品开发过程中,使用CH554G应该是一个不错的选择。
如果,有什么不合适的就是每次写程序和程序测试,都需要插拔USB线,而且不能同时存在,因为要占用计算机的端口。如果增加一个板载reset键+拨码的转换开关,可以不需要插拔就实现重新加电的过程,应该开发更方便。
板子上是有download按键、reset按键和供电开关的哦,通过USB口下载的话,在不插拔USB线的情况下也是可以进入下载模式和复位芯片的。:) 沁恒USB单片机 发表于 2018-5-31 11:29
板子上是有download按键、reset按键和供电开关的哦,通过USB口下载的话,在不插拔USB线的情况下也是可以进 ...
是这样的,不过,这个USB口做ISP一般就不会再作为UART口使用了,不能用USB-TTL的方式进行调试的。这样的设计,有方便的地方已有不好用的地方。
页:
[1]