找回密码
 立即注册
查看: 166|回复: 6

我有个关于 STC90C514AD 的 P4 的问题,求助

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-03-04 09:13:33
已绑定手机

1

主题

2

回帖

17

积分

新手上路

积分
17
发表于 2025-3-3 15:45:22 | 显示全部楼层 |阅读模式
我司这里用了一批 STC90C514AD 的单片机。
在一个机箱里最多使用12块板,每个板上一个单片机。

用了4个引脚作为地址线,地址线由机箱的母版来提供,用来区分这12块。理论上足够,因为 2x2x2x2=16>12。

4个引脚对应 BDN3 BDN2 BDN1 BDN0,这12个位置分别对应地址 0000-1011,也就是10进制的00-11。
地址线从上电开始,就维持电压稳定,不会变化。
实际烧入程序后,发现大部分板是正常的,但有 1/10 的比例的板不正常,它们总是“自以为自己的地址的最高位BDN3是0”,
也就是把它放在9号位置,它自以为是1号位置;把它放在11号位置,它自以为是3号位置。
用电压表去量,那个pin看起来确实是5.0V左右,稳定的。
用单片机程序去测试,“如果BDN3为0,为低电平,则蜂鸣器响一会,再继续”,发现有问题的这几个板,都会响,也就是说程序跑起来,它自以为这里BDN3就是=0.

是我有什么地方设置不对吗?
附图是关于PCB,c程序和Keil的相关位置。

sch原理图,关于BDN3附近

sch原理图,关于BDN3附近
02 下载工具.jpg
03 Keil Options for Target.jpg
04 Keil version.jpg
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-03-04 09:13:33
已绑定手机

1

主题

2

回帖

17

积分

新手上路

积分
17
发表于 2025-3-3 15:46:31 | 显示全部楼层
这里是一些关于程序代码的信息


///////////////////////// .c最前面的声明和include
#include        "STC90C5xAD.h" //单片机型号的 .h

#include        "OLED_0p66.h"//与 OLED 有关的 .h
#include        "STC90C58AD_ADC.h"//与 ADC 有关的 .h

#include        "string.h"//OLED 用到的某些东西需要这个 .h

#define        LED_ON        0        //Led 亮
#define LED_OFF        1        //Led 灭
....
sbit        BDN3        =        P4^3;        //Board Number        4bit 0-15
sbit        BDN2        =        P0^7;
sbit        BDN1        =        P0^6;
sbit        BDN0        =        P0^5;



/////////////////////////// main里关于BDN3的地方
//计算自己的板号 0-15
//boardNumber = (BDN3? 8 : 0) + (BDN2? 4 : 0) + (BDN1? 2 : 0) + (BDN0? 1 : 0);
boardNumber=        (BDN3?(0x01<<3):0)        |
                (BDN2?(0x01<<2):0)        |
                (BDN1?(0x01<<1):0)        |
                (BDN0?(0x01<<0):0);
       
/*
if(!BDN3)
{
        BEEP=1;
        Delay_300ms(10);
        BEEP=0;
}
*/



///////////////////////////STC90C5xAD.h里关于P4的段落
sfr         P4          =           0xC0;
    sbit    P40         =           P4^0;
    sbit    P41         =           P4^1;
    sbit    P42         =           P4^2;
    sbit    P43         =           P4^3;
    sbit    P44         =           P4^4;
    sbit    P45         =           P4^5;
    sbit    P46         =           P4^6;
    sbit    P47         =           P4^7;



回复 支持 反对

使用道具 举报 送花

3

主题

1160

回帖

1031

积分

等待验证会员

积分
1031
发表于 2025-3-3 15:48:00 | 显示全部楼层
关于您提到的STC90C514AD单片机P4口地址线问题,初步分析可能是由于硬件或软件配置不当导致的。首先,建议检查PCB设计,确保地址线(BDN3-BDN0)的电气连接稳定,无虚焊或短路现象。其次,验证上电时地址线的电压稳定性,确保无瞬态波动或干扰。软件方面,检查程序中地址读取的逻辑,确保在初始化阶段正确读取并存储地址值。此外,考虑在程序中加入地址校验机制,以检测并纠正可能的地址读取错误。最后,建议对异常板进行单独测试,以排除个体硬件故障的可能性。通过上述步骤,应能有效定位并解决问题。

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2025-3-3 17:42:04 | 显示全部楼层
是否是上电瞬间读取的,如果是,就延时再读外部IO状态
如果单片机初始化速度比外部信号变化速度快,就会初始化错误
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-03-04 09:13:33
已绑定手机

1

主题

2

回帖

17

积分

新手上路

积分
17
发表于 2025-3-4 11:53:07 | 显示全部楼层
Debu*** 发表于 2025-3-3 17:42
是否是上电瞬间读取的,如果是,就延时再读外部IO状态
如果单片机初始化速度比外部信号变化速度快,就会初 ...

BDN3-0 这4个脚,是在上电后约3秒后读取的。
main开始后,有 Delay_300ms() 至少2处,一些别的初始化等,时间应该足够长了,然后再来取值的。
此时距离开始应该已经3秒+了。

void Delay_300ms(u16 Del_300ms)
{
        //忘了抄自哪里了
        u16 m=0;
        for(;Del_300ms>0;Del_300ms--)
        {
                for(m=6245;m>0;m--)
                {
                        ;
                }
        }
}

P43位置,用示波器看也是稳定在5.1V左右,并无什么变化。

今天发现的情况是,把一个现象不正常的板上的单片机卸下来,换个现象正常的单片机,居然就好了。

总觉得不大可能是单片机坏了,上周加这周,已经有5个这个现象了。
>_<

点评

单片机VCC和GND接5.6V 5W稳压管,IO串330Ω电阻  详情 回复 发表于 2025-3-4 12:28
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2025-3-4 12:28:17 | 显示全部楼层
Vincy*** 发表于 2025-3-4 11:53
BDN3-0 这4个脚,是在上电后约3秒后读取的。
main开始后,有 Delay_300ms() 至少2处,一些别的初始化等, ...

单片机VCC和GND接5.6V 5W稳压管,IO串330Ω电阻
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:19
  • 最近打卡:2025-04-28 15:35:40

8

主题

44

回帖

459

积分

版主

积分
459
发表于 2025-3-4 15:59:01 | 显示全部楼层
先判断脚位是否正常,如果这个脚位出现损坏的话,需要排查产品使用过程中是否存在过流/过压冲击,用示波器测量VCC与P43脚位电平,看看是否会出现过压冲击脉冲。
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 03:34 , Processed in 0.183936 second(s), 97 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表