最近在用M3弄超声波模块。超声波模块是电平方式的US-020,给TRIG引脚10us以上的高电平后,可以在ECHO引脚得到一个时长与测量距离成正比的高电平脉冲。另外,模块上使用了一块LM324,通过查询,LM324为四比较器,并且电源电压为+3.0~+32V。另有一块IC,表面已被刮去。无法辨认型号。
现在遇到的的问题是,我使用了M3的官方例程进行实验。完全没有改动,实验现象如下(例程中,PC8接模块的TRIG,PC9接模块的ECHO):
①当US-020模块使用3.3V供电时(由板上取得),从PC9端口可以读得输入,但是通过定时器的计时后得到的确实一个固定的值,不会根据距离的改变而改变。
②当US-020模块使用5V供电时(几乎所有的文档都说超声波模块应该5V供电),无法从PC9端口读到输入,使用仿真调试时,程序死在了对端口的读取 GPIO_ReadInputDataBit(ECHO_PORT,ECHO_PIN) ,
我的解决之路:
①我刚开始认为例程所用的TIM2有问题。所以改成TIM7等也都得到如上的结果。
②通过改变端口。将TRIG接到PA2,ECHO接到PA3。得到结果一样。
③在芯片手册,查到STM32F103VET6所有的IO口均支持CMOS和TTL电平。并且带FT标示的还支持5V电平,而PC8,PC9均带有FT标示。
弄了好几天。结果依然和之前上述的一样,实在想不出是哪里的问题。特来请教各位是否遇到过相识的问题。 |