初级会员

- 积分
- 53
- 金钱
- 53
- 注册时间
- 2014-11-11
- 在线时间
- 2 小时
|
5金钱
用 GPIO 直接连接 CD4094的 STR,CLK,DATA, OE片选连接VDD 5V,CD4094的 Q1-Q8接继电器,程序GPIOInit和串行输入数据锁存都没有问题,唯一的问题是重新上电后,如果上电前 QN有高电平的状态的时候,Q1-Q8就不全是低电平,我程序对IO配置后,就送入0x00,所有Qn至低电平,但是继电器吸和断开,就出现打火。
#define SPISTPIN GPIO_Pin_6
#define SPIMOSIPIN GPIO_Pin_5
#define SPICLKPIN GPIO_Pin_4
#define SPIPORT GPIOA
void IO4094Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = SPICLKPIN|SPISTPIN|SPIMOSIPIN ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(SPIPORT, &GPIO_InitStructure);
GPIO_ResetBits(SPIPORT, SPICLKPIN|SPISTPIN|SPIMOSIPIN);
}
反复看程序都没什么问题,因为之前我是用STM32-101CB控制,改版后用了103RB,连接和代码都一样,用101的上电后没有出现同样的问题,
开始的时候怀疑程序,后来我直接不跑程序(main函数里面啥也没有),问题依旧,CD4094的输出好像保持了上次上电的状态一样,我原来的101板子上的也不跑程序,却不出现问题。
我继电器板子 和 控制板 是独立的,通过排线连的,在103的板子重新换了个CD4094,还是一样,因为101板子的CD4094和103的都是一个批次的,所以不可能有什么不同。
有没有朋友曾经也遇到过这样的问题,或者知道什么原因,请赐教。
|
最佳答案
查看完整内容[请看2#楼]
回复【2楼】正点原子:
---------------------------------
没找到什么原因,然后我把片选脚不直接5V,用GPIO接控制,问题解决.
|