【沁恒蓝牙开发】OPA 用做比较器-CH32V208
CH32V208的OPA配置为比较器功能
·
CH32V208 内含OPA(运算放大器)可以作为比较器,以下相关实现比较器功能的相关记录。
1、引脚确认
每一个OPA有2套引脚,按需选择一套即可。

注: PA3 是OPA1_OUT0,也是可以配置为比较器的输出的。
2、接线
使用PPK2 提供2V电压,作为对比电压,接到OPA1_CH1P / N 任意一端,本次测试接到PA6上(即OPA1_CH1N)。
剩下的一端,接到 GND 或 3.3V,可以手动切换,做比较。
3、代码
/*********************************************************************
* @fn OPA1_Init
*
* @brief Initializes OPA1 collection.
*
* @return none
*/
void OPA1_Init( void )
{
GPIO_InitTypeDef GPIO_InitStructure = {0};
OPA_InitTypeDef OPA_InitStructure = {0};
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE );
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; //PA6
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init( GPIOA, &GPIO_InitStructure );
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //PB0
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init( GPIOB, &GPIO_InitStructure );
OPA_InitStructure.OPA_NUM = OPA1;
OPA_InitStructure.PSEL = CHP1;
OPA_InitStructure.NSEL = CHN1;
OPA_InitStructure.Mode = OUT_IO_OUT0; //OUT0-PA3 OUT1-PB1
OPA_Init( &OPA_InitStructure );
OPA_Cmd( OPA1, ENABLE );
}
/*********************************************************************
* @fn main
*
* @brief ADC_Channel0_Init
*
* @return none
*/
int main( void )
{
// u16 ADC_val, i;
SystemCoreClockUpdate();
Delay_Init();
USART_Printf_Init( 115200 );
printf( "SystemClk:%d\r\n", SystemCoreClock );
printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() );
printf( "OPA Test\r\n" );
OPA1_Init();
while (1) {
;;
}
}
4、实验效果
概述:
PA6 输入2v,PB0人为控制接 GND 或 3.3V,可以用万用表测量输出端的电压PA3。
结果:
N端输入电压大于P端电压2V时,OPA_OUT端呈现低电平
N端输入电压小于P端电压2V时,OPA_OUT端呈现高电平
更多推荐



所有评论(0)