IIC、SPI协议

IIC总线
两线半双工通信,传输位速率在标准模式下可达100Kbit/s,快速模式下可达400Kbit/s,高速模式下可达3.4Mbit/s。

SDA线:双向串行数据线,发送到SDA 线上的每个字节必须为8 位,每次传输可以发送的字节数量不受限制。每个字节后必须跟一个响应位。首先传输的是数据的最高位(MSB),如果从机要完成一些其他功能后(例如一个内部中断服务程序)才能接收或发送下一个完整的数据字节,可以使时钟线SCL 保持低电平,迫使主机进入等待状态,当从机准备好接收下一个数据字节并释放时钟线SCL 后数据传输继续。

SCL线:双向串行时钟线,所有主机在SCL线上产生它们自己的时钟来传输I2C总线上的报文。数据只在时钟的高电平周期有效,因此需要一个确定的时钟进行逐位仲裁。时钟同步通过线与连接I2C 接口到SCL 线来执行。这就是说SCL 线的高到低切换会使器件开始数它们的低电平周期,而且一旦器件的时钟变低电平,它会使SCL 线保持这种状态直到到达时钟的高电平。但是如果另一个时钟仍处于低电平周期,这个时钟的低到高切换不会改变SCL 线的状态。因此SCL 线被有最长低电平周期的器件保持低电平。此时低电平周期短的器件会进入高电平的等待状态。

void Write_IIC_Byte(unsigned char IIC_Byte)
{
    uint32_t i=0;
    oled_sda_mode(GPIO_Mode_OUT);//输出模式
    
    SCL=0;
    SDA_W=0;
    delay_us(1);
    
    for(i=0;i<8;i++)//MSB最高位有效进行数据的发送
    {
        if(IIC_Byte & (1<<(7-i)))
            SDA_W=1;
        else
            SDA_W=0;
        
        delay_us(1);
        
        SCL=1;
        delay_us(1);
        
        SCL=0;
        delay_us(1);
        
    }
}

SPI总线
四线全双工通信,以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是MISO(主设备数据输入)、MOSI(主设备数据输出)、SCLK(时钟)、CS(片选)。

(1)MISO– Master Input Slave Output,主设备数据输入,从设备数据输出;
(2)MOSI– Master Output Slave Input,主设备数据输出,从设备数据输入;
(3)SCLK – Serial Clock,时钟信号,由主设备产生;
(4)CS – Chip Select,从设备使能信号,由主设备控制。

SPI接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据。

uint8_t spi_rc522_send_byte(uint8_t txd)
{
	int32_t i=0;
	uint8_t d=0;
	
	for(i=7; i>=0; i--)
	{
		//设置MOSI引脚的电平
		if(txd & (1<<i))// txd & (1<<7)
			GPIO_SetBits(MOSI);
		else
			GPIO_ResetBits(MOSI);
		
				//时钟线为输出低电平,这个时候,从机就读取该电平
		GPIO_ResetBits(SCK);
		Delay1_us(1);
		

		
		//时钟线为输出高电平,这个时候,从机输出有效的数据给主机识别		
		GPIO_SetBits(SCK);
		Delay1_us(1);
		

		
				//读取MISO引脚的电平
		if(GPIO_ReadInputDataBit(MISO))
			d|=1<<i;
	
	}
	
	return d;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值