SPI读取多片165问题,求助【自己已经解决】
连线如下:http://cache.amobbs.com/bbs_upload782111/files_49/ourdev_708007WD4H8R.JPG
(原文件名:TU.JPG)
代码如下:
Uint16 TMP1,TMP2;
LOAD = 0;
delay_loop();
LOAD = 1;
SpiaRegs.SPITXBUF = 0;
while(SpiaRegs.SPIFFRX.bit.RXFFST !=1) { }
TMP1 = SpiaRegs.SPIRXBUF<<8;
SpiaRegs.SPITXBUF = 0;
while(SpiaRegs.SPIFFRX.bit.RXFFST !=1) { }
TMP2 = SpiaRegs.SPIRXBUF;
Word = TMP1 + TMP2;
----
结果实际中,IN_7出现2次,U2的H没有出现。
不知道哪出错了,还是我对165理解错误?各位帮忙修改一下 谢谢
===================
已经解决
原来是配置CLK上升/下降问题,以前是18个上升沿,修改配置(SPICCR.6) (SPICTL.3),可以变成17个上升沿,这样数据刚好合适 10脚都当输出了还能当输入啊?你以为这是CPLD啊? 回复【1楼】ahuang227 《黄海》
-----------------------------------------------------------------------
你咋看是输出的?
都是输入 原理图上没有看到74hc165的输入引脚的下拉电阻,有可能是这个原因,coms器件不允许悬空引脚。
所以我为了省事一直用的74ls165,不过不知道为什么很贵。 回复【3楼】weakdancer 郜帅
-----------------------------------------------------------------------
这个只是示意图,硬件方面肯定没问题的
只是不知道软件哪出错了 明明是硬件问题还说不是硬件问题. 回复【5楼】dragon_hn
-----------------------------------------------------------------------
DSP寄存器的配置问题 <<U2的H没有出现。>>
U2的H端都接地了,读出来的肯定是0.
比较正确的做法是U2的PIN10接地.
GND->PIN10
IN_7->PIN11
IN_8->PIN12
IN_9->PIN13
IN_10->PIN14
IN_11->PIN3
IN_12->PIN4
IN_13->PIN5
IN_14->PIN6
因为PIN10不受锁存信号控制,所以你这样会导致IN_7与其它不同步. 165手册中时序中看到,在Load 变为低电平时,Qh就已经有第一个最高位输出了。若想兼容SPI 片选信号,应该在LOAD前加一个反相器。
页:
[1]