大家帮我看看这是模拟I2C通信还是模拟SPI通信

2019-03-24 09:21发布

我用的launchpad控制OLED屏
//管教定义;
#define byte  unsigned char
#define word  unsigned int
#define dword unsigned long

#define DC_CLR P1OUT &=~BIT0
#define DC_SET P1OUT |=BIT0

#define RST_CLR P1OUT &=~BIT1
#define RST_SET P1OUT |=BIT1

#define SDA_CLR P1OUT &=~BIT2
#define SDA_SET P1OUT |=BIT2

#define SCL_CLR P1OUT &=~BIT3
#define SCL_SET P1OUT |=BIT3

#define X_WIDTH 128
#define Y_WIDTH 64


//向LCD写入地址     
void LCD_WrDat(unsigned char dat)
{
   unsigned char i=8;
     DC_SET;//数据位有效
     SCL_CLR; //时钟低电平时可以数据可以变化  
  while(i--)
  {
    if(dat&0x80)
      {SDA_SET;}
    else
      {SDA_CLR;}      
        SCL_SET ;        
        SCL_CLR;   
        dat<<=1;   
  }
}


//向LCD屏中写入命令
void LCD_WrCmd(unsigned char cmd)
{
    unsigned char i=8;
    DC_CLR;//指令位有效
    SCL_CLR;  
  while(i--)
  {
    if(cmd&0x80)
    {SDA_SET;}
    else{SDA_CLR;}
    SCL_SET;
    SCL_CLR;   
    cmd<<=1;   
  }        
}


这是其中几个程序,我感觉像是模拟SPI,因为模拟I2C要定义起始条件,结束条件,ACK啥的,这个完全没定义。
但是如果是SPI的话为啥有SDA和SCL……只是名字问题么??我刚开始学SPI不太懂想问问大家。

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
huaiqiao
1楼-- · 2019-03-24 14:39
< 楼主,这个肯定是iic,我想对于iic和spi的概念您可能还是不太清楚,这点的话,建议从论坛搜搜相关帖子。
也可以在下载中心搜索相关资料进行熟悉相关概念性的东西。
ACK是应答
msp430learner
2楼-- · 2019-03-24 16:19
 精彩回答 2  元偷偷看……
msp430learner
3楼-- · 2019-03-24 22:17
huaiqiao 发表于 2016-5-13 18:39
楼主,这个肯定是iic,我想对于iic和spi的概念您可能还是不太清楚,这点的话,建议从论坛搜搜相关帖子。
...

这应该也不是硬件I2C啊,所以应该就是软件SPI,只不过口表述的是I2C的 SDA.SCL吧…………不知道我理解的对不对
ywlzh
4楼-- · 2019-03-25 02:28
不管是spi还是IIC,都是一种通信方式,楼主中的程序既然是控制LCD的,那应该是看LCD的控制时序图。
shihuntaotie
5楼-- · 2019-03-25 02:35
 精彩回答 2  元偷偷看……
ienglgge
6楼-- · 2019-03-25 03:51
应该是软件模拟i2C啊。    if(dat&0x80)
      {SDA_SET;}
    else
      {SDA_CLR;}  先在sda上写数据,再给时钟信号。    你应该看看具体执行动作的完整的语句,这才能看到完整的时序过程。不是但看函数。

一周热门 更多>

相关问题

    相关文章