搜索
bottom↓
回复: 51

请教一个STM32控制74HC165的问题

[复制链接]

出0入0汤圆

发表于 2016-4-4 22:08:24 | 显示全部楼层 |阅读模式
本帖最后由 huangyiting1990 于 2016-4-4 22:09 编辑

         STM32F103控制74HC165(SPI),本来应该是很简单的程序。但是我死活调不出来。  
         74HC165是5V供电。
         STM32  3.3V

      

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2016-4-4 22:08:25 | 显示全部楼层
>>PL应该在低的时候CE为低,此时clk给一个脉冲,接着再将PL拉高

PL 为低时不应改变 CLK 电平,因为毫无作用。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2016-4-4 22:09:03 | 显示全部楼层
本帖最后由 huangyiting1990 于 2016-4-4 22:16 编辑

咦,怎么显示不了图片?
(好了,图片已经显示了。所以把这楼层的图片删掉)

出0入0汤圆

发表于 2016-4-5 08:50:03 | 显示全部楼层
你提供的波形欠缺了 SPI_CS(HC165 1脚 SH/LD)的电平变化,HC165 的1脚不能在多个CLK进行移位时,长期处於低电平。

SPI_CS 是否在SPI工作时长期处於低电平?

出0入0汤圆

 楼主| 发表于 2016-4-5 08:59:07 | 显示全部楼层
alias 发表于 2016-4-5 08:50
你提供的波形欠缺了 SPI_CS(HC165 1脚 SH/LD)的电平变化,HC165 的1脚不能在多个CLK进行移位时,长期处於低 ...

不好意思,CS信号有的  只是我没有抓出来。  我是在发送CLK之前 会送一个CS(持续10us左右的)低脉冲信号。

出0入0汤圆

发表于 2016-4-5 09:02:08 | 显示全部楼层
STM32输出加上拉电阻了没

出0入0汤圆

 楼主| 发表于 2016-4-5 09:19:25 | 显示全部楼层
modbus 发表于 2016-4-5 09:02
STM32输出加上拉电阻了没

试过3.3K上拉,结果是一样。  现在是直接推挽输出

出0入0汤圆

发表于 2016-4-5 09:22:33 | 显示全部楼层
CLK频率多少

出0入0汤圆

发表于 2016-4-5 09:26:12 | 显示全部楼层
直接推挽输出的话应该把74HC165换成74HCT165

出0入0汤圆

 楼主| 发表于 2016-4-5 09:27:16 | 显示全部楼层

我记得好像脉宽  是在1us(100K)左右。后来我试过频率降下来 ,降成了10us(10K)左右 也是一样。

出0入0汤圆

发表于 2016-4-5 09:37:11 | 显示全部楼层
huangyiting1990 发表于 2016-4-5 09:19
试过3.3K上拉,结果是一样。  现在是直接推挽输出

为什么不是5v上拉 现在明显和165的逻辑电平不符  换lvc165可以用3.3v驱动

出0入0汤圆

 楼主| 发表于 2016-4-5 09:41:30 | 显示全部楼层
myxiaonia 发表于 2016-4-5 09:37
为什么不是5v上拉 现在明显和165的逻辑电平不符  换lvc165可以用3.3v驱动

有试过3.3K 上拉的5V  效果和 推挽输出现象一致

出0入10汤圆

发表于 2016-4-5 09:44:27 | 显示全部楼层
74hc 5v工作电压情况下高电平最低是3.5v
                                                            
                                                                                                
                                                                                         
                                                      

出0入0汤圆

发表于 2016-4-5 09:50:09 | 显示全部楼层
特意登录下来回答,74HC165可以用3.3V供电的,用5V的3分之二才是高电平,5/3*2=3.3333V才是高电平.

出0入0汤圆

 楼主| 发表于 2016-4-5 09:55:00 | 显示全部楼层
jxyctwt 发表于 2016-4-5 09:50
特意登录下来回答,74HC165可以用3.3V供电的,用5V的3分之二才是高电平,5/3*2=3.3333V才是高电平. ...

好像是2.5V  就已经是高电平了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2016-4-5 09:55:33 | 显示全部楼层
luckroll 发表于 2016-4-5 09:44
74hc 5v工作电压情况下高电平最低是3.5v
                                 ...

应该是2.5V   

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-4-5 09:56:33 | 显示全部楼层
74HC165也要用3.3V供电,我产品上一片板子上用8片.

出0入0汤圆

发表于 2016-4-5 09:57:35 | 显示全部楼层
兄弟你的标题不合格啊  没有描述问题啊  165是并入串出  而且用spi硬件读取时钟相位极性有点怪异的

出0入0汤圆

 楼主| 发表于 2016-4-5 09:59:23 | 显示全部楼层
myxiaonia 发表于 2016-4-5 09:57
兄弟你的标题不合格啊  没有描述问题啊  165是并入串出  而且用spi硬件读取时钟相位极性有点怪异的 ...

我是用软件模拟的SPI驱动, 你说相位机性有怪异。   是哪个地方时序不太对吗?

出0入0汤圆

 楼主| 发表于 2016-4-5 10:00:42 | 显示全部楼层
jxyctwt 发表于 2016-4-5 09:56
74HC165也要用3.3V供电,我产品上一片板子上用8片.

        5V供电应该是没问题的。我之前有用过,确实没问题。这是这次出现这种问题。所以懵逼了。。。。

出0入0汤圆

发表于 2016-4-5 10:09:03 | 显示全部楼层
我同意12楼说的 HC165 5V供电时最低输入高电平是3.5V。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2016-4-5 10:36:45 | 显示全部楼层
alias 发表于 2016-4-5 10:09
我同意12楼说的 HC165 5V供电时最低输入高电平是3.5V。

这个手册上的参数感觉很难理解呀,典型值 比最小值要小,比最大值要大。。。。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-4-5 11:00:01 | 显示全部楼层
huangyiting1990 发表于 2016-4-5 09:59
我是用软件模拟的SPI驱动, 你说相位机性有怪异。   是哪个地方时序不太对吗? ...

如果用spi的硬件模式,很可能会造成移位提前或者延迟,而且移位时钟边沿也要小心

从你截图看,可以肯定是时序的问题,不是电平的问题,建议和spi的典型时序比较下吧

出0入0汤圆

 楼主| 发表于 2016-4-5 11:01:26 | 显示全部楼层
myxiaonia 发表于 2016-4-5 11:00
如果用spi的硬件模式,很可能会造成移位提前或者延迟,而且移位时钟边沿也要小心

从你截图看,可以肯定 ...

你好,能具体点吗?不甚感激

出0入0汤圆

发表于 2016-4-5 11:09:13 | 显示全部楼层
电路设计黄金定律第一条:不可用资料文档内所提出的TYPICAL参数,作为决定元件是否能工作之指标,因为所有的TYP参数,厂方都完全不予保证能达到的。

出0入0汤圆

发表于 2016-4-5 11:44:58 | 显示全部楼层
本帖最后由 alias 于 2016-4-6 08:29 编辑

不明白你为何把 CLK 不用时设为高电平?

以下的HR1, HR2....是跟据楼主一楼的命名,HR1=HC165的H脚, HR2=HC165的G脚....

用软件模拟的SPI驱动,正常的数据交换是空闲时 CLK 设为低电平,SH/LD高电平。当SH/LD接收了一个负脉冲后,HR1~HR8被锁存,其中HR1将立刻出现於QH脚上,所以用家可以读取QH脚HR1电平。
当CLK由低跳变至高电平,寄存器产生移位,令HR2出现於QH脚,可在CLK 下降沿读取QH脚电平,CLK再由低跳变至高电平,HR3出现於QH脚.....

用者只需要额外提供7个CLK就可读入 HR2~HR8。







出0入0汤圆

 楼主| 发表于 2016-4-6 08:54:37 | 显示全部楼层
zeroXone 发表于 2016-4-5 20:49
3.3V 和 5V 不是问题,时序速度也不是问题,因为你的逻辑分析仪已经出数据了。
你该好好看一下逻辑框图
...

还没试,不过先谢谢了

出0入0汤圆

 楼主| 发表于 2016-4-6 08:55:49 | 显示全部楼层
alias 发表于 2016-4-4 22:08
>>PL应该在低的时候CE为低,此时clk给一个脉冲,接着再将PL拉高

PL 为低时不应改变 CLK 电平,因为毫无作 ...

虽然还没验证,但是您是答复我最多的人。还是谢谢你

出0入0汤圆

发表于 2016-4-6 08:59:55 | 显示全部楼层
huangyiting1990 发表于 2016-4-6 08:55
虽然还没验证,但是您是答复我最多的人。还是谢谢你

请你再看看我26楼的回答,因为更改了。

出0入0汤圆

 楼主| 发表于 2016-4-6 10:25:46 | 显示全部楼层
alias 发表于 2016-4-6 08:59
请你再看看我26楼的回答,因为更改了。

您看看是不是这样的时序, 还是要在SH/LD低脉冲的时候要在CLK上送一个时钟?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-4-6 11:46:24 | 显示全部楼层
初始化:PL为高,CLK为低。
读数据:
1、PL为低,延时,PL为高
2、读Q7
3、CLK为高,延时,CLK为低
4、重复2、3动作8次

出0入0汤圆

发表于 2016-4-6 11:49:25 | 显示全部楼层
另外想稳定可靠,STM32输出高电平必须保证在3.5伏以上

出0入0汤圆

发表于 2016-4-6 13:05:29 | 显示全部楼层
huangyiting1990 发表于 2016-4-6 10:25
您看看是不是这样的时序, 还是要在SH/LD低脉冲的时候要在CLK上送一个时钟? ...

我会采用以下的时序:

初始化:SH/LD为高,CLK为低。
读数据时:
1、SH/LD为低,延时,SH/LD为高     ; HR1~HR8电平已锁存
2、读HR1                                      ; HR1   
3、CLK为高,延时                           ; 移位动作至输出电平稳定需要时间
4.  读HR2
5.  CLK为低,延时
6、重复3 ,4,5 动作6次                     ; HR3~8

出0入0汤圆

发表于 2016-4-7 08:20:25 | 显示全部楼层
PL为低的时候要给一个时钟沿才算读入好像是74HC166,不是74HC165

出0入0汤圆

发表于 2016-4-7 08:24:13 | 显示全部楼层
zeroXone 发表于 2016-4-6 23:20
PL也就是你说的SH为低的时候要给一个时钟沿才算读入了的。你只是PL由低到高,不行的。PL也不是那样用的。 ...

>>PL也就是你说的SH为低的时候要给一个时钟沿才算读入了的。你只是PL由低到高,不行的。PL也不是那样用的。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-4-7 09:48:02 | 显示全部楼层
在此提醒一下,如果使用MCU硬件的SPI来接收HC165数据, 空闲时 CLK输出应设为高电平,在AVR中那是 CPOL=1, CPHA=0 即 SPI 应用模式2,STM32下请对照采用。

出0入0汤圆

 楼主| 发表于 2016-4-7 10:58:08 | 显示全部楼层
alias 发表于 2016-4-7 09:48
在此提醒一下,如果使用MCU硬件的SPI来接收HC165数据, 空闲时 CLK输出应设为高电平,在AVR中那是 CPOL=1, C ...

昨天测试了一下,把我板子上的 5V GND CLK CS DAT 飞线到另一款板子上的165.驱动正常。唯独在这板子上还是会出现位与位之间干扰现象(比如第一位拉低的时候 第二位能正常 拉高拉低。第一位拉低的时候第二位就不能正常拉高拉低)。邪乎了

出0入0汤圆

发表于 2016-4-7 11:17:25 | 显示全部楼层
huangyiting1990 发表于 2016-4-7 10:58
昨天测试了一下,把我板子上的 5V GND CLK CS DAT 飞线到另一款板子上的165.驱动正常。唯独在这板子上还 ...

不会搞来搞去是片子的问题吧,,,大家都下忙一场

出0入0汤圆

 楼主| 发表于 2016-4-7 11:21:29 | 显示全部楼层
myxiaonia 发表于 2016-4-7 11:17
不会搞来搞去是片子的问题吧,,,大家都下忙一场

芯片木有问题,  我也尝试了  把两块板子上的IC调换。问题依旧    我都快被逼疯了

出0入0汤圆

发表于 2016-4-7 11:29:03 | 显示全部楼层
huangyiting1990 发表于 2016-4-7 11:21
芯片木有问题,  我也尝试了  把两块板子上的IC调换。问题依旧    我都快被逼疯了 ...

兄弟 你是不是没有把情况描述清楚  是原来的程序一样的板子一直用的好好的 这块板子上就出现了这种问题  还是说从头设计的板子结果作出的程序不对  这是两个完全不同的概念

出0入0汤圆

 楼主| 发表于 2016-4-7 11:34:42 | 显示全部楼层
myxiaonia 发表于 2016-4-7 11:29
兄弟 你是不是没有把情况描述清楚  是原来的程序一样的板子一直用的好好的 这块板子上就出现了这种问题   ...

两款 板子  但是原理图 一致。 只是布线不同而已。  程序是一样的

出0入0汤圆

发表于 2016-4-7 13:33:03 | 显示全部楼层
板子画错了

出0入0汤圆

发表于 2016-4-7 13:35:23 | 显示全部楼层
或者是电平不匹配也会有怪现象

出0入0汤圆

发表于 2016-4-7 16:27:59 | 显示全部楼层

楼主,解决了么?

把读165的那段程序贴出来,大家看看,

出0入0汤圆

 楼主| 发表于 2016-4-7 17:24:45 | 显示全部楼层
wkman 发表于 2016-4-7 16:27
楼主,解决了么?

把读165的那段程序贴出来,大家看看,

还在纠结中。。。

出0入4汤圆

发表于 2016-4-8 17:23:06 | 显示全部楼层
赚积分,赶快重回高级进水坛

出0入0汤圆

发表于 2016-4-8 17:44:40 来自手机 | 显示全部楼层
加电平转换电路可靠控制过,可以考虑下

出0入0汤圆

 楼主| 发表于 2016-4-8 22:01:03 | 显示全部楼层
alias 发表于 2016-4-7 09:48
在此提醒一下,如果使用MCU硬件的SPI来接收HC165数据, 空闲时 CLK输出应设为高电平,在AVR中那是 CPOL=1, C ...

兄弟你好,问题解决了,特地回来答复你一声。  不是时序的问题,不是电平匹配的问题,也不是硬件的问题。而是因为引线过长,导致信号受干扰了,波形变形了。

解决办法:信号线上各加了一个100pF的电容就解决了。    

谢谢兄弟

出0入0汤圆

 楼主| 发表于 2016-4-8 22:01:19 | 显示全部楼层
modbus 发表于 2016-4-6 11:49
另外想稳定可靠,STM32输出高电平必须保证在3.5伏以上

兄弟你好,问题解决了,特地回来答复你一声。  不是时序的问题,不是电平匹配的问题,也不是硬件的问题。而是因为引线过长,导致信号受干扰了,波形变形了。

解决办法:信号线上各加了一个100pF的电容就解决了。    

谢谢兄弟

出45入88汤圆

发表于 2019-12-11 15:11:38 | 显示全部楼层
huangyiting1990 发表于 2016-4-8 22:01
兄弟你好,问题解决了,特地回来答复你一声。  不是时序的问题,不是电平匹配的问题,也不是硬件的问题。 ...

楼主还在论坛吗?100P是对地来接吗?接单片机端还是165那端?还是两端都接?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 02:56

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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