欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 關于ATT7053BU的問題,發送二十多次地址,才回復一次數據? [打印本頁]

作者: 07若    時間: 2019-9-23 19:45
標題: 關于ATT7053BU的問題,發送二十多次地址,才回復一次數據?
請問有哪位大神,用過ATT7053BU這個芯片,我使用SPI三線,即CS下拉到地,一直是發送二十多次地址,才回復我一次數據,請問這是什么原因。用示波器看了波形,也都對。急急急
作者: huwqly    時間: 2019-9-23 22:07
參考一下這個:https://blog.csdn.net/lyx123/article/details/48972819
作者: 07若    時間: 2019-9-23 23:11
huwqly 發表于 2019-9-23 22:07
參考一下這個:https://blog.csdn.net/lyx123/article/details/48972819

你好,我其實就是參考這個的,不知道是不是時序的問題
作者: 07若    時間: 2019-9-24 09:25
這是我的代碼,請大神指教
u32 ATT7053BU_SPI_Read(unsigned char com)        //讀取ATT7053BU的有效值
{
        int i;
        u32 read_data;
        read_data = 0;
        ATT7053BU_CLK = 0; //確保CLK初始狀態是0
        delay_us(1);
        ATT7053BU_CLK = 1;        //啟動數據傳輸  
        delay_us(1);
        ATT7053BU_DI = 0;//0表示主機向從機讀數據
        delay_us(1);
        ATT7053BU_CLK = 0;//從機需要在下降沿取數據
        delay_us(1);
        /*提取數據*/
        for(i=7; i>=0; i--)
        {
                ATT7053BU_CLK = 1;
                delay_us(1);
                if((com & (0x01<<i))>>i)//(com & 0x01)
                {       
                        ATT7053BU_DI = 1;
                        delay_us(1);
                }
                else
                {       
                        ATT7053BU_DI = 0;
                        delay_us(1);
                }
                delay_us(1);
                ATT7053BU_CLK = 0;//從機需要在下降沿取數據
                delay_us(1);                       
        }
        delay_us(2);
        ATT7053BU_CLK = 1;
        delay_us(1);
        ATT7053BU_CLK = 0;
        if(ATT7053BU_DO != 0)       
                read_data = read_data | 1;
        delay_us(2);  //從機接收到命令后,開始送出數據,上升沿送數據

        for(i=0; i<23; i++)
        {
                ATT7053BU_CLK = 1;
                delay_us(10);
                ATT7053BU_CLK = 0;
                delay_us(10);
                read_data = read_data<<1;
                if(ATT7053BU_DO != 0)
                        read_data++;
                delay_us(1);
//                delay_us(1);                                                       
        }
        ATT7053BU_CLK = 1;
        delay_us(1);
        return         read_data;
}

void ATT7053BU_SPI_Write(u8 com,u32 write_data)
{
        char i;
        unsigned int temp_data;
        temp_data = 1;       
        ATT7053BU_CLK = 0;  //確保CLK初始狀態是0
        delay_us(20);
        ATT7053BU_CLK = 1;//啟動數據傳輸
        delay_us(10);
        ATT7053BU_DI = 1;//1表示主機向從機寫數據
        delay_us(10);
        ATT7053BU_CLK = 0;//從機需要在下降沿取數據
        delay_us(10);
        for(i=6; i>=0; i--)
        {
                ATT7053BU_CLK = 1;        //啟動數據傳輸
                delay_us(10);
                if((com & (0x01<<i))>>i)
                {
                        ATT7053BU_DI = 1;
//                        delay_us(1);
                }                       
                else
                {
                        ATT7053BU_DI = 0;
//                        delay_us(1);
                }
                delay_us(10);
                ATT7053BU_CLK = 0;
                delay_us(10);
        }
        /*從機接收到命令后,開始送出數據,上升沿送數據*/
        delay_us(40);
        for(i=23; i>=0; i--)
        {
                ATT7053BU_CLK = 1; //啟動數據傳輸
                delay_us(10);
                if(( write_data& (temp_data <<i) )>>i)
                {
                        ATT7053BU_DI = 1;
                        delay_us(1);
                }
                else
                {
                        ATT7053BU_DI = 0;
                        delay_us(1);
                }
                delay_us(10);
                ATT7053BU_CLK = 0;
                delay_us(10);       
        }
               
}
作者: xxx155    時間: 2021-5-18 17:13
您好,請問問題解決了嗎?




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1