NUC970实现SPI通信

自我扫盲

首先直观点说说SPI的概念,是Motorola提出的,主要用于芯片级的通信。全程呢叫Serial Perpheral Interface串行外设接口。通用的是主从四线全双工,一根选择线,一根时钟线,一根输出,一根输入,支持一主多从,选择与时钟都由主提供。

灵魂画法如下:

 唉,这里面我们一步步来:

  1. NSS选择,可以约定高电平选择还是低电平选择;
  2. CLK可以约定是上升沿还是下降沿触发;
  3. 数据就没什么说的。

硬件资源

好,到这里为止就是简单的扫盲,下面基于NUC970怎么实现。

先看看他上面的资源:

翻手册中~NUC970首先支持两个SPI接口/设备;然后

  1. 支持主模式
  2. 可以全双工
  3. 支持1-32位的传输;高载模式下一次传输两个数据,所以最高是64位(这个没验证)
  4. 支持大端与小端模式
  5. 支持双/四IO传输模式(说是FLASH情况下用)

哗啦啦是归根结底可以在下面几个端口玩点花出来:

具体功能我就简单如下说说:

  1. 可以进行触发电平配置、从机选择等基本配置
  2. 可以设置自动模式(待填坑)
  3. 可以设置一次多次传输(1-4)
  4. 可以设置双/四通道传输
  5. 可以中断

以上内容都有相关的代码支撑,翻手册查~

操作思路

然后下面讲大致的操作流程(当然,也是待我填坑认证)

  1. 先设置时钟寄存器,走多少频率的定一定;
  2. 设置要不要走自动模式,时钟是高电平还是低电平算空闲,时钟的触发沿,选择的触发沿;
  3. 配置下大端还是小端,每次的传输长度,一次传多少个;
  4. 淡定的把数据写入寄存器;
  5. 激动人心的设置GO_BUSY,启动SPI
  6. 等待SPI中断,或者轮询看看GO_BUSY有没有清零,等待结束;
  7. 读一下输入寄存器;
  8. 结束

操作前提:

  1. 把GPIO管脚配置成SPI,主要是往MPF寄存器对应位置写入0xB。
  2. 设置时钟CLK_PCLKEN1,有关的是CLK_PCLKEN1[4]与CLK_PCLKEN[5]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值