久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3430|回復: 2
打印 上一主題 下一主題
收起左側

ADE7758 SPI讀寫問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:266943 發表于 2018-4-4 16:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
想做一個ADE7758的SPI通信驅動程序,用的STVD軟件庫函數,模擬SPi讀寫ADE7758寄存器,程序如下:
void SPI_Write(unsigned char type,unsigned long int wdata,unsigned char databit)   
{   
    unsigned char loop = 0;   

    type = type & 0x7F;   
    type = type | 0x80;  
                GPIO_WriteLow(SCLK); //時鐘
                GPIO_WriteLow(NCS); //片選信號
    for(loop = 0; loop < 8; loop++)   
    {   
                  GPIO_WriteHigh(SCLK);  
                        nop();   
                        if(type&0x80)
                    GPIO_WriteHigh(DIN);
      else        
                    GPIO_WriteLow(DIN);         
                  nop();   
                        GPIO_WriteLow(SCLK);   
                        nop();   
                        type = (type << 1);
                         nop();
    }//end of for()   
    delayus(10);
    for(loop = 0; loop < databit; loop++)   
    {   
      GPIO_WriteHigh(SCLK);   
                        nop();   
                        if(wdata&0x800000)//24位
                          GPIO_WriteHigh(DIN);
                  else        
                    GPIO_WriteLow(DIN);         
                        nop();   
                        GPIO_WriteLow(SCLK);   
                        nop();   
                        wdata = (wdata << 1);
                         nop();
                        
    }//end of for()   
     GPIO_WriteHigh(NCS);  
}//end of write7758()   

unsigned long SPI_Read(unsigned char type,unsigned char databit)   
{   
    unsigned char loop;   
    unsigned long  rtdata = 0;   
    type = type & 0x7F;   
    type = type | 0x00;  
                 GPIO_WriteLow(SCLK);
                  GPIO_WriteLow(NCS);
    for(loop = 0;loop < 8;loop ++)   
    {   
                  GPIO_WriteHigh(SCLK);   
      nop();   
      if(type&0x80)
                  GPIO_WriteHigh(DIN);
      else        
                  GPIO_WriteLow(DIN);        
      nop();   
      GPIO_WriteLow(SCLK);   
      nop();   
      type = (type << 1);
                         nop();
    }   
                delayus(10);   
    for(loop = 0;loop < databit;loop ++)   
    {                   rtdata = (rtdata << 1);
                        GPIO_WriteHigh(SCLK);   
      nop();   
         
      if(GPIO_ReadInputPin(DOUT))
                          rtdata |=0x01;   
      nop();   
      GPIO_WriteLow(SCLK);   
      nop();  
               
    }   
         GPIO_WriteHigh(NCS);
    return(rtdata);  
               
}//end of read7758()

同時讀寫3個電壓增益寄存器,寄存器為有符號12位
    SPI_Write(0x24,0x055500,16);   //寫相位A的電壓增益寄存器   
    SPI_Write(0x25,0x055500,16);   //寫相位B的電壓增益寄存器   
    SPI_Write(0x26,0x055500,16);   //寫相位C的電壓增益寄存器   

    DATA[0]= SPI_Read(0x24,16);
    DATA[1]= SPI_Read(0x25,16);
    DATA[2]= SPI_Read(0x26,16);

仿真了一下得的結果不一樣
DATA[0]=1365
DATA[1]=1195
DATA[2]=1365
A、C相數是對的,B相不對,讀電流增益寄存器正好相反B相是對的,AC錯了,是時序有問題還是其他原因,求幫助。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:287575 發表于 2018-4-4 18:09 | 只看該作者
SPI_Write(0x24,0x055500,16);   //寫相位A的電壓增益寄存器
if(wdata&0x800000)//24位
你到底是16位還是24位,ADE7758我沒用,但類似的芯片都是24位,三個字節
應該是SPI_Write(0x24,0x055500,24);既然讀寫都是三字節,就沒必要帶形參了,直接SPI_Write(ADDR, DATA)
回復

使用道具 舉報

板凳
ID:266943 發表于 2018-4-7 08:50 | 只看該作者
寄存器有8位、12位,16位,24位四種電壓增益寄存器是12位,按照16位寫,高位開始寫,SPI_Write(0x24,0x055500,16)是向12位寄存器寫入數值0x555,我對三個同類型寄存器進行寫入讀取操作,讀出來結果不一樣,就是想問問可能是什么原因
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 偷拍自拍网站 | 九九九久久国产免费 | 日韩精品一区二区三区 | 日韩一区二区在线视频 | 亚洲国产精品人人爽夜夜爽 | 九九综合 | 久久亚洲国产精品 | 免费高清av | a级毛片免费高清视频 | 久久涩涩| 亚洲精品久久久一区二区三区 | 成年人黄色一级片 | 国产精品美女久久久久久免费 | 国产一区欧美一区 | 欧美日韩国产一区二区三区 | 男插女下体视频 | 国产精品久久国产精品 | 九九九视频在线 | 成人国产网站 | 欧美一区二区三区久久精品 | www.av在线 | 欧美精品区 | 亚洲欧美在线一区 | 99热国产精品 | 久久99蜜桃综合影院免费观看 | 欧美在线观看免费观看视频 | 亚洲三级视频 | 国产精品视频一区二区三区四蜜臂 | 欧美成人免费在线 | 久久亚洲免费 | 伊人春色成人 | 欧美国产精品一区二区 | 国产视频导航 | 国产精品一二三区在线观看 | 欧美一区二区三区视频 | 国产成人精品一区二区三区视频 | 日韩美香港a一级毛片免费 国产综合av | 欧洲精品码一区二区三区免费看 | 综合久久亚洲 | 国产视频久久久 | 在线中文字幕视频 |