Part Number:SN74HC166
开发SN74HC166芯片时,读取到的数据是错乱的,以下是我的相关代码。 开发中,只需要控制CLK(PG14),SH/LD(PG11),QH(PB3)三个引脚,其余引脚已经通过硬件设计处理好了,
//
uint8_t SN74HC166_data()
{
uint8_t data = 0;
uint8_t i =0;
GPIO_writeBit(GPIOG,GPIO_Pin_11,Bit_RESET); //将并行数据传入移位寄存器
//生成锁存时钟
GPIO_writeBit(GPIOG,GPIO_Pin_14,Bit_RESET);
GPIO_writeBit(GPIOG,GPIO_Pin_14,Bit_SET);
GPIO_writeBit(GPIOG,GPIO_Pin_11,Bit_SET); //进入串行模式
for(i=0; i<8; i++)
{
if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_3))
{
data | = 1<<i ;
}
else;
GPIO_writeBit(GPIOG,GPIO_Pin_14,Bit_RESET);
GPIO_writeBit(GPIOG,GPIO_Pin_14,Bit_SET);
}
return data;
}
Vivian Gao:
能更详细说一下吗?错乱具体指的是什么?其余引脚是如何进行硬件设计的?
,
z l:
读到的数据,应该为0x9F,但实际读到的数据是7F,对于SER引脚是与GND连接,CLKEN与GND连接,
,
Vivian Gao:
你能分享一些你认为不正确的波型吗?试图通过解析C代码来调试移位寄存器的问题几乎是不可能的。
,
z l:
第一个图为clk与SH/LD之间的波形图关系,第二个图为SH/LD与Qh之间的关系。第三个图为CLK与Qh之间的关系,从波形图的分析来看,和得到的结果是一样的,查看不到问题的原因
,
Vivian Gao:
您是否尝试加载其他值?如果你放大时钟边缘,也会有所帮助,这样我们就可以看到是否存在边缘速率违规。
,
z l:
你好,特别感谢你一直以来的解答,我的问题已经解决了,特别感谢
TI中文支持网





