STM8S003无法检测到电平的引脚变化
本帖最后由 swtj 于 2025-4-3 22:24 编辑以STM8S003F芯片做作为主机MCU 控制从机Elmos524.09超声波雷达芯片,做一款汽车倒车雷达系统;在开发时遇到了一点问题: 主机与从机之间通过特定的IO引脚进行通讯,通过引脚低电平时间的长短进行数据交流。
目前主机可以正常的通过IO引脚向从机发送指令,从机也可以正常的返回相应的数据,且在IO引脚上的示波器也检测出了相应的波形;
但是问题在于,在从机返回相应的数据波形以后,主机在检测引脚电平变化(也就是读取数据时),始终无法获取相应的电平信息,通过IAR编译器的DEBUG功能时。发现芯片在检测无法检测到电平的上升沿,以至于程序超时。系统采用us级的计数方式,示波器波形、硬件电路设计、接收函数代码在图片和附件中;
求大佬指点!
接收代码:
u16 receive_status_data(GPIO_TypeDef * GPIOx, GPIO_Pin_TypeDef PortPins)
{
uint16_t start_time, low_time;
uint16_t fall_edge = 0;
uint16_t rise_edge = 0;
uint16_t data = 0;
u16 volatile tnow=0;
uint8_t bit_count = 15;
GPIO_Init(GPIOx, PortPins, GPIO_MODE_OUT_PP_HIGH_FAST);
Tim2_init();
start_time = TIM2_GetCounter();
// 读取10位状态数据
for (int i = 0; i < bit_count; i++) {
// 等待下降沿
start_time = TIM2_GetCounter();
// while ( 0 != GPIO_ReadInputPin(GPIOx, PortPins)){
while ((GPIOx->IDR & PortPins)!=0){
tnow = TIM2_GetCounter();
if(tnow > start_time){
if((tnow - start_time) >= 2000 ){
return 0xFFFF;
}
}else {
if((0xFFFF -start_time +tnow) >=2000){
return 0xFFFF;
}
}
}
fall_edge = TIM2_GetCounter();
// 等待上升沿
GPIO_WriteHigh(GPIOA, GPIO_PIN_3);
while ( (GPIOx->IDR & PortPins) == 0){
// while ((GPIOx->IDR & PortPins)==0){
tnow = TIM2_GetCounter();
if(tnow > start_time){
if((tnow - start_time) >= 2000 ){
GPIO_WriteLow(GPIOA, GPIO_PIN_3);
return 0xFFFF;
}
}else {
if((0xFFFF -start_time +tnow) >=2000){
return 0xFFFF;
}
}
}
rise_edge = TIM2_GetCounter();
low_time = rise_edge - fall_edge; // 低电平时间
// data_cmd.cdm=low_time;
// 判断逻辑值
data_cmd.cdm=low_time;
if (low_time >= 95 && low_time <= 105) {
data |= (0 << (bit_count - 1 - i)); // 0
} else if (low_time >= 47 && low_time <= 52) {
data |= (1 << (bit_count - 1 - i)); // 1
} else {
return 0xFFFF; // 无效位
}
}
// enableInterrupts();
TIM2_Cmd(DISABLE);
echo.encho_data= data;
return data;
}
1.png (35.07 KB )
驱动 /接收引脚https://bbs.21ic.com/data/attachment/forum/202504/02/104841x8e4quq6zqhqqh6x.png.thumb.jpg
k5.png (67.46 KB )
芯片引脚定义https://bbs.21ic.com/data/attachment/forum/202504/02/104841zeyccdz57t78ww8p.png.thumb.jpg
c99021bd9df8c3f26db61512b0ff49a.jpg (638.46 KB )
接收引脚波形https://bbs.21ic.com/data/attachment/forum/202504/02/105245ytopypiyfxxxd2dt.jpg.thumb.jpg
页:
[1]