|
问题内容:我检测市电波形,通过电压互感器转换成低电压,然后通过芯片采集数据,大概需要每周期采集100次,然后我测试单通道采集AD值,因为市电是个正弦波,我只检测正点压,负电不考虑,然后就出现了一种情况,就是正弦波偶尔测出来的波形如下图1所示。突然变成0了,我用示波器测了输入端波形,正常的。
图1
图1
AD设置如下:官方例程改的
void ADC_Init()
{
ADC_InitTypeDef ADC_InitStructure; //结构定义
// 1+2+11+10 = 24 24MHz/(2*24) = 500kHz 0.000002秒一次
ADC_InitStructure.ADC_SMPduty = 15; //ADC 模拟信号采样时间控制, 0~31(注意: SMPDUTY 一定不能设置小于 10)
ADC_InitStructure.ADC_CsSetup = 0; //ADC 通道选择时间控制 0(默认),1
ADC_InitStructure.ADC_CsHold = 1; //ADC 通道选择保持时间控制 0,1(默认),2,3
ADC_InitStructure.ADC_Speed = ADC_SPEED_2X1T; //设置 ADC 工作时钟频率 ADC_SPEED_2X1T~ADC_SPEED_2X16T
ADC_InitStructure.ADC_Power = DISABLE; //ADC功率允许/关闭 ENABLE,DISABLE
ADC_InitStructure.ADC_AdjResult = ADC_RIGHT_JUSTIFIED; //ADC结果调整, ADC_LEFT_JUSTIFIED,ADC_RIGHT_JUSTIFIED
ADC_InitStructure.ADC_Priority = Priority_0; //指定中断优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3
ADC_InitStructure.ADC_Interrupt = DISABLE; //中断允许 ENABLE,DISABLE
ADC_Inilize(&ADC_InitStructure); //初始化
// ADC电源打开1ms内不允许测量(有波动),如果测量,那么测量出来的结果也大概率是不准的
ADC_PowerControl(ENABLE); //单独的ADC电源操作函数, ENABLE或DISABLE
}
没有中断,没有定时器,就1个串口1不断发送信号给PC
串口设置如下:只发送,不接收数据
// 串口1初始化
COMx_InitStructure.UART_Mode = UART_8bit_BRTx; //模式, UART_ShiftRight,UART_8bit_BRTx,UART_9bit,UART_9bit_BRTx
COMx_InitStructure.UART_BRT_Use = BRT_Timer1; //选择波特率发生器, BRT_Timer2 (注意: 串口2固定使用BRT_Timer2, 所以不用选择)
COMx_InitStructure.UART_BaudRate = baudrate; //波特率, 110 ~ 115200
COMx_InitStructure.UART_RxEnable = ENABLE; //接收允许, ENABLE或DISABLE
COMx_InitStructure.UART_Interrupt = ENABLE; //中断允许, ENABLE或DISABLE
COMx_InitStructure.BaudRateDouble = DISABLE; //波特率加倍, ENABLE或DISABLE
COMx_InitStructure.UART_Priority = Priority_0; //指定中断优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3
COMx_InitStructure.UART_P_SW = UART1_SW_P30_P31; //切换端口, UART2_SW_P10_P11,UART2_SW_P46_P47
UART_Configuration(UART1, &COMx_InitStructure); //初始化串口2 USART1,USART2,USART3,USART4
采集AD单通道:
void GetADValue_Cycle(u16* array)
{
unsigned char i = 0;
for (i = 0; i<200; i++)
{
EA = 0;
array = Get_ADCResult(ADChannel_Set);
EA = 1;
delay_10us(20);
}
}
每隔100ms发送一次数据,就是上图的波形参数,然后有些波形正常,有些波形就如图1所示,有一个值跳变成0。我调节过设置参数,增大采样时间,但是都没有效果,甚至效果更差。
有人遇到过类似的问题吗?
|
|