zynq外设SPI使用经验

1、综述

SPI的具体使用可以去查看ug585的文档,并配合附录里的寄存器。

我这里记录调试SPI的过程和经验。

2、需求

由于工程中,需要使用SPI来进行大数据块的传输,其数据块是900个字节,已经远远超出了SPI的FIFO深度。由于SPI的寄存器并没有指示数据已经发送完毕的标志(SPI的发送寄存器中的数据发送完毕),因此采用收取到的字节数=发送的字节数来判别是否已经发送完毕(类似于系统启动前BIT)。

3、方法

配置:主模式,手动设置CS,空闲时时钟为高电平,下降沿发送数据,上升沿接收数据

整个工程思路:先发送第一包128字节的数据,并设置FIFO中还剩余4个字节未发送时,触发发送中断,在该中断中把需要发送的数据送入发送FIFO中,并接收SPI的数据,当接收到的字节数与发送的字节数相等时,拉低CS,关闭中断,关闭SPI使能。

核心伪代码如下:

中断处理:

        while(SpiPs_GetSR & SpiIxR_RXNEMPTY)

      {
            SpiPs_Rx;
            RCnt++;
        }

    if(RCnt==TheSpi.ByteCnt) {
        //已完成传输
        if(TheSpi.BufRef) (*(TheSpi.BufRef))--;
 &nbs

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值