STC学习--SPI 2

本文介绍了STC单片机通过SPI与GD25Q54芯片通信的要点,包括SPI的四种模式、数据发送与接收的时序,并着重解决了在读取16位芯片ID时遇到的问题,如片选信号的使用、数据存储错误以及需要复位才能读取数据等。
摘要由CSDN通过智能技术生成

注意的点:1.片选信号CS的使用。2.采集数据的位数,采集的16位数据用8位数据存放,导致一直得不到正确的结果。

1.SPI根据电平空闲时的状态,以及读取第一个数据是在什么时候,一共有4种模式。(具体可以在站内查询,非常详细)

2.和之前的情况一样,SPI通信依靠时钟的上下沿来对数据进行发送和读取,所以我们可以在一个周期内把对一个bit位数据的发送和读取同时完成。

3.我们的单片机是35MHz的,而GD25Q54芯片的spi通信速率最大可以是120MHz,所以我们在写这个函数的时候,可以直接修改引脚电平,不用做时延。

#include "gd25q64.h"
#include "stc8g.h"

sbit CS = P5^4;
sbit MOSI = P4^0;
sbit MISO = P4^1;
sbit SCLK = P4^3;

// 4.在时钟上升沿发送,下降沿接收。

unsigned char SPI_RW(unsigned char dat)
{
    unsigned char i;
    for(i=0;i<8;i++)
    {
     SCLK = 0;                   //这里先构造时钟源低电平
     MOSI = (dat&0x80);   //把数据准备好
     SCLK = 1;                  //把时钟拉高,出现上升沿,数据发送出去
        dat <<= 1;       

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值