关于SPI编程过程中遇到的问题(含解决方案)

  最近手上有个小项目,其中一个功能是要实现STM32与DSP的SPI通信。

  从来没有进行过通信编程的我,着实心中有很多烦恼。

  首先是对这个SPI的通信协议,协议的定义时序看了很多遍了,但就是不知道怎么用,由于手中资源有限,也无法让我自己去验证,只能在项目的基础上去摸索了。

  

  其次,对于两块处理器芯片的SPI资源的调用方面。

  STM32通用例程很多,在功能中又是工作在主模式上,所以实现起来还是比较的方便。

  DSP方面,对于跑程序的处理器,一般不会把它工作在从模式上。然而我很不幸地就要这么子做了。

  DSP是ADI公司最新的一块SHARC系列ADSP-21489。里面很多资源都封装得很好,只要简单地修改寄存器就好了。

  正如我现在要实现的从模式收发数据,读写数据从历程中就是直接的对接收/发送寄存器进行操作,辅以状态位的变化显现。

  困惑正是在于这里,今天花了一天的时间,以这种方式写了个从模式下SPI接收数据的程序,还没有实验,还不知道成功没有。

  现在的几个问题。

  1、只要SPI功能打开,SPI就会像时序那样传送数据了么?

  2、DSP工作在从模式方面,如何去获取SPI使能的标志?

  2、用我现在的编程方式是否可以实现接收信号?

  2014年12月22日22:57:50

  总算把STM32与ADSP-21489的SPI通信调通了,调通了之后才发现没有这么难。

  对于自己没调通之前的疑惑,也总算有答案了。

    答案一:只要SPI功能打开,SPI就会像时序描述的那样传送数据。

    答案二:ADSP的SPI模块有四个主要寄存器,配置寄存器,时钟寄存器(工作在主模式)、标志寄存器和状态寄存器。

        ADSP工作在从模式,是通过标志寄存器中的ISSS标志位获取使能的。

    答案三:可以实现全双工通信,现在也实现了全双工通信,但是在一次发送/接受过程中,无法保证全双工通信。

        我现在的实现方式是,STM32一直发送数据,接受的数据验证通过后,拉高原先拉低的引脚以确保通信成功。

 

  STM32与ADSP-21489  SPI通信总结:

    首先,STM32工作在主模式中,STM32的库函数与例程资源特别丰富,基本在网上就能找到实现方式,又是主模式(标准模式)

  所以实现起来特别容易。但也真是这样让我走了些弯路。

    其次,ADSP工作在从模式中,一般这样的处理器不会工作在从模式中的,因为在SPI的通信过程中会占用系统CPU资源,换句话说就是:

  只要在SPI通信过程中,处理器就不能做其他的事情了。所以ADSP工作在从模式的情况只有外部启动时才这么做。

    本身对ADSP的接触并不多,对直接的寄存器操作也不是很娴熟。STM32顺风顺水的同时也让我绕过了一种思维,就是直接对寄存器进行操作

  来控制SPI口的思维。

      

转载于:https://www.cnblogs.com/csu-ybh/p/4170462.html

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值