stm32要驱动一个1.8v的器材,SPI口是双向口,其他口都是单向的。
其他的单向口用的是“开漏+上拉”,就这一个双向口,嫌费事,之前不想上电平转化芯片,可是又不知道影响大不大,就做了个试验。
想测验一下stm32能把大约多高电压识别为高。
计划很简单,便是检测到高电平,就点亮led。
while(1)
{
if(PBin(10)==1)
else
}
PC13的接口接的是一个led,形式推挽。
PB10的接口接的是一个滑动变阻器,形式下拉。
我滚动滑动变阻器的时分发现,
把PB10改成浮空状况也差不多,差异便是PB10在不接的时分,下拉不亮,浮空是亮的。
为了更直观的验证,PB10接到1.8v上,
写了一个小程序测验了一下:
while(1)
{
if(PBin(10)==1) {i++;j++;}
else {i++;}
delay_ms(1);
UART1_Put_String(“测验总次数:”);
UART1_Putw_Dec(i);
UART1_Put_String(“检测为高次数:”);
UART1_Putw_Dec(j);
UART1_Put_String(“”);
}
成果大约是这样的
测验总次数:132835检测为高次数:131906
测验总次数:132836检测为高次数:131907……
测验总次数:611184检测为高次数:606143
测验总次数:611185检测为高次数:606144……
大约有0.5%~1%的状况检测不出来。
作为比照,我把PB10接到3.3v
测验总次数:147005检测为高次数:147005
测验总次数:147006检测为高次数:147006……
彻底没有失误率
测验总次数:147005检测为高次数:147005
测验总次数:147006检测为高次数:147006……
彻底没有失误率
看来保险的规划还得上电平转化芯片,还要搭外围模块,感觉还占地儿的。或许今后把0805的封装都改成0603的会好些。