您的位置 首页 电源

SPI总线初体验

SPI是当前用的比较多的硬件总线,结构很简单,一共只要4根线就可以了。其中两根是数据线,名字等会说,一根时钟线,叫SCK;一根是片选线

SPI是当时用的比较多的硬件总线,结构很简单,总共只需4根线就能够了。 其间两根是数据线,姓名等会说,一根时钟线,叫SCK; 一根是片选线(CS)。4根线的衔接见下面:

SPI的典型使用中,通讯的两边一个是主(Master),一个是从(slave)。区别是由主设备供给通讯时钟信号SCK给从设备,此外主设备还需要供给一个引脚来驱动Slave的片选信号CS。主从设备的SO和SI是穿插衔接的, 主的SO是数据输出口要接在从设备的SI上,反之仍然。依据这样的规划,能做SPI的设备往往是单片机, ARM芯片或许更强一些的CPU什么,而flash, 网络芯片或许声响A/D 和D/A转化芯片就扮演从设备的人物。主设备供给片选信号来选中从设备和接连时钟信号来驱动两边设备的读写进程。

因为从设备往往都是厂家规划好的, 首要的用户作业是如安在主设备上把从设备驱动起来。这是把我搞的灰头土脸的当地。以我要驱动Flash为例,依据看的文档,我直觉上知道应该把片选信号先拉低(选中flash),然后在SO上宣布操控指令,最终等数据到来。成果我的程序是这样写的:
1、初始化SPI操控器,包含波特率设置
2、驱动CS为低电平选中flash
3、发送操控指令
4、承受数据

成果我收到的数据只要一个字节,内容为0. 忙了一个早上仍是这个成果,搞的我极端抑郁,严峻置疑自己的RP,然后开端置疑单片机是不是坏的,flash是不是坏的。一圈下来持续置疑RP。最终真实抑郁,就扛来示波器测波形。因为这个玩也不熟悉,因而不敢容易动,弄坏了把自己卖了才赔的起了(10G的哦)。成果发现430单片机的片选CS信号正常,在数据发送的时分SO口的确有波形输出,阐明输出是对的。可是。。。。为什么SCK没有接连时钟信号输出 ???? 我马上振振有词以为 单片机烧了,告知师兄, 成果师兄暴汗…. :SPI主设备假如不接连输出数据,就不保护时钟了。登时觉得自己长的好白阿。 正确的做法应该在主设备上送完指令后不断的送无用数据让spi操控器持续输出时钟而且读取发回来的数据。因为SPI操控器是同步读取数据的,因而我在发送的一起也读取数据,因而我送出去一个字节的数据,所以读回来一个数据,当然这个数据是无用的。

知道问题了,午饭后我把程序改成中止形式的, 一切的数据发送和承受悉数选用中止。 发送寄存器一空 430就会发一个发送安排妥当中止,我在中止程序中把数组中的指令字宣布去,等发完之后就一直发0x00,保护时钟,直到发送出去的字节数等于希望收到的数据量。别的一方面当数据收到后430就触发接纳中止得到数据。中止程序把数据读出来扔到接纳数组里边。 等发送完后要查看是不是移位寄存器为空,避免还有数据没出去,等空了就拉高片选信号断开flash. 完结这些后,查看接纳数组,能够看到假如发送指令为n字节,则前面n字节的数据都是废的,所以要从n+1的方位来找收到的数据。满意大结局。(其实后边还碰到了波特率不对,成果丢数据的问题,可是很快处理了加上现在写的手酸,就略过拉)

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/232527.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部