最近忙碌 一直没空上来写东西。前几天折腾了一把SPI总线用TI的430单片机来读取SPI flash数据,搞的灰头土脸的但是好歹还是搞定了。就拿出来滥竽充数一下。
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条评论
快来发表一下你的评论吧 !