SPI SLAVE

SPI模块基本设计都是master/slave一体,可以减少IO的占用。master接口设计,比较简单因为SPI模块自己是发起方,数据发送和接收的SPISCLK是自主可控的。但是,SPI当slave接口时,spi_sclk来自芯片外部的master。因此,高速模式时,对系统时钟sysclk和spi_sclk有要求,它会涉及到几个问题,1、带宽;2、首字节如何发送;3、后续字节如何发送。

1、带宽
现在我们用的很多ST的MCU芯片SPI主从接口都是叫SSP,它的问题是master模式可以做到很高速度。但是slave模式时,由于用的是同步的方式只能跑在一个比较低的速度,它要求sys_clk > 12 * spi_sclk假如,master要求的spi_sclk跑10MHz,但是SPI Slave接口能用的系统时钟sysclk只有20MHz,怎么办?解决的办法就是用spi_sclk来发送数据。

2、首字节
用master的过来的时钟lauch数据存在一个问题就是,怎么让sysclk时钟域的首字节数据加载到spi_sclk时钟域。可以有以下几种方式:
A、第一帧发送无效数据,利用第一帧的时间,把数据加载到spi_sclk时钟域;
B、利用CS信号下降沿,主动把首字节数据从加载到spi_sclk时钟域;
C、软件写配置的方式,主动把首字节数据从加载到spi_sclk时钟域;

3、后续字节
后续字节的发送分模式:SPH=0时,N字节的更新由N-1字节的最后一个SPI_SCLK预载入;SPH=1时,N字节的更新由N字节的第一个SPISCLK载入;为啥不一样,可以见下图,SPI_SCLK的数据有效方式。

另外,要实现上面的功能的设计,需要仔细处理同步世界的异步信号。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值