模拟SPI 对LMH6401(PGA)写入数据,无返回

2019-12-27 18:53发布

这是写入,发送,和读状态函数
/************向LMH6401 中写入一个字节*************************1*/         

void W_LMH6401_byte(unsigned char date)
{
        unsigned char temp;
        unsigned char i;
        temp = date;  

        for (i = 0; i < 8; i++) {
                SCK_0 ;
                if((temp&0x80)==0x80)
                        { MOSI_1; }
                else { MOSI_0; }
                SCK_1 ;
                temp <<= 1;
        }
          MOSI_0;               
}

/********************读取LMH6401 一个字节***********************2*/  

unsigned char R_LMH6401_byte(void)
{
        unsigned char temp=0;
        unsigned char i,SDI;

        for(i = 0; i < 8; i++) {
                temp <<= 1;
                SCK_0 ;        

                SDI = GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_6);
                if(SDI) {temp++;         }
//                else         {printf(" output low data ");}
                SCK_1 ;

        }
        return(temp);
}

/*******************读取LMH6401 状态**************************3*/  

unsigned char LMH6401_status(u8 addr)
{
         unsigned char status;
         DF_CS_0;  //片选打开
         delayus(10);

         W_LMH6401_byte(addr); //D7H是读取状态的命令字

         status = R_LMH6401_byte(); //读取状态字节

         DF_CS_1; //片选关闭
         delay(500);

         return status;

}


下面是读写的操作时序图
QQ截图20170616095637.png (129.04 KB, 下载次数: 0) 下载附件 2017-6-16 10:05 上传
发送00,应该返回03,但是毫无反应无返回,发送其他指令也是

还有一个问题就是,如何发送7位地址,请各位帮忙解答一下





友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。