11、STM32 之 74HC165并转串简析

本节程序受 刘凯老师STM32 视频源码 结合 畅学硬件开发板 修改而来。

 

上面是原理图,下面根据畅学51底板,讲解一下:

 

是并转串模块:

15引脚  ---CE---CLK INH  接地。 所以所以始终使能。

10引脚  ---DS---SI       空接。代表移位以后,最低位补高电平还是低电平。

 

重点看一下 移位寄存器使能引脚  和  时钟

1引脚 ---PL --- S/L  : 接高电平时,使能,移位有效。 低电平,锁存。

2引脚 ---CP --- CLK : 时钟上升沿时,移位。将高位D7(H)的值,移位到Q7(QH)。

 

以STM32F103C8T6 为例写这个模块程序。

配置PB0、PB1、PB2  -----  CLK、QH、S/L

PB8 ~ PB15   --------  A   ~  H

令 PA0 ~ PA7  ------  LED1 ~ LED8  : 让串行输出的结合起来,用LED灯的亮灭表示。

 

首先配置I/O口

1、

 

2、配置 GPIO口,初始化,确定输入还是输出,频率 和 使用的引脚。

除QH为 浮空输入以外,其余全部 推挽上拉。

 

3、程序最开始:

 

下面是 74HC165 并转串模块。(软件仿真观测 )

由于初始化完成后 ,输出的引脚多为0. 而畅学系列的 底板 LED为共阳极。

 

所以利用函数库中 写端口函数 

 

PS: 看一下 GPIO 函数库 截图

 

所以 PA口 ,写 FFFF 。

同时为了体现 A—H 的并转串,所以 PB 口 写 F000。

此时也是 S/L ,CLK 写0,移位寄存器 无效, 时钟低电平。

 

PS : 由于之前一直觉得软件仿真的错误性,所以用 QH 直接 接 LED灯,单步调试看每一步现象, 配置好 IO口后, LED灯会亮一下。

 

应该是这种原因造成。

也正因为这样的单步调试,让我更好的理解了 这个 165 芯片的 实际动作。

看一下具体函数:

 

PB15 ~ PB8 == F0

1、 使能移位寄存器引脚  GPIO_Pin_2 置1.

此时 H位的 数值 ,已经移位到了 QH 输出口了。 即 QH =1.

 

2、 8次循环,首先将QH的值,作为输入 ,发送到输入引脚PB1中。 Data 读取到这个 值, 即data = 0x0001.

3、 然后经历一个上升沿,注意的是,上升沿到来时 , 165芯片内部已经完成一个移位,并且将 实际G位的值 移到了 QH输出口, 即QH=1.

然后 左移data 以后。 data |= GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_1);这句话又将读出QH---PB1 的值,放到data中, data=0x0003.

依次循环8次,最后将data的值 0xF0 写到PA口上,输出LED灯 4灭,4亮。

(自己最好,单步调试,看一下,印象更加深刻)

 

这样基本的GPIO 和 74HC165 就讲解完了!!!

 

 

州仔 发表于12-22 16:06 浏览4124次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

州仔
州仔(总统)
金币:3351个|学分:72885个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号