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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7074|回復: 6
收起左側

ATT7053BU 驅動代碼共享

[復制鏈接]
ID:209079 發表于 2018-7-25 11:31 | 顯示全部樓層 |閱讀模式
//我們的SPI速度最高可以達到1.5M左右
//需要注意的是每次CS拉低啟動傳輸,需要給2-3us的延時時間。
//CS拉高結束數據傳輸之前也需要給出2-3us的延時時間

void        Delay(unsigned int time)        //一個控制信號高電平低電平時間的延時
{
        int i;
        for(i=0; i<time; i++);
}


unsigned long SPI_Read(unsigned char address)
{
        int i;                                       
        unsigned long temp_data;
        temp_data = 0;                       
        SPI_CLK_LOW;        //確保CLK初始狀態是0
        Delayus(1);       
        SPI_CS_HIGH;       
        Delayus(2);               
        SPI_CS_LOW;               
        Delayus(5);               
                                       
        SPI_CLK_HIGH;        //啟動數據傳輸       
        Delayus(1);
        SPI_DIN_LOW;        //0表示主機向從機讀數據
        Delayus(1);
        SPI_CLK_LOW;        //從機需要在下降沿取數據
        Delayus(1);
                               
        for(i=6; i>=0; i--)
        {
                SPI_CLK_HIGH;        //啟動數據傳輸       
                Delayus(10);
                if( (address& (0x01<<i))>>i)//(address & 0x01)
                {
                        SPI_DIN_HIGH;
                       
                }
                else
                        SPI_DIN_LOW;
                Delayus(1);
                SPI_CLK_LOW;        //從機需要在下降沿取數據
                Delayus(10);
        }

        SPI_CLK_HIGH;       
        Delayus(10);
        SPI_CLK_LOW;
        if(READ_SPI_DOUT)
                temp_data = temp_data | 1;
       
        Delayus(2);        //從機接收到命令后,開始送出數據,上升沿送數據
        for(i=0; i<23; i++)
        {
                SPI_CLK_HIGH;       
                Delayus(10);
                SPI_CLK_LOW;
                Delayus(10);
                temp_data = temp_data<<1;
                if(READ_SPI_DOUT)
                        temp_data++;
                Delayus(1);
        }
        SPI_CS_HIGH;
        return temp_data;

}


void        SPI_Write(unsigned char address, unsigned long write_data)
{
        int i;                                       
        unsigned long temp_data;
        temp_data = 1;
       
        SPI_CLK_LOW;        //確保CLK初始狀態是0               
        Delayus(100);       
        SPI_CS_HIGH;       
        Delayus(50);               
        SPI_CS_LOW;               
        Delayus(100);               
                                       
        SPI_CLK_HIGH;        //啟動數據傳輸       
        Delayus(10);       
        SPI_DIN_HIGH;        //1表示主機向從機寫數據
        Delayus(10);       
        SPI_CLK_LOW;        //從機需要在下降沿取數據
        Delayus(10);       
       
        for(i=6; i>=0; i--)
        {
                SPI_CLK_HIGH;        //啟動數據傳輸       
                Delayus(10);       
                if((address & (0x01<<i))>>i)
                {
                        SPI_DIN_HIGH;
                       
                }
                else
                        SPI_DIN_LOW;
                Delayus(10);       
        SPI_CLK_LOW;        //從機需要在下降沿取數據
                Delayus(10);       
        }
                                                //從機接收到命令后,開始送出數據,上升沿送數據
        Delayus(40);       

        for(i=23; i>=0; i--)
        {
                SPI_CLK_HIGH;        //啟動數據傳輸       
                Delayus(10);       
                if((write_data & (temp_data<<i))>>i)
                {
                        SPI_DIN_HIGH;       
                       
                }
                else
                        SPI_DIN_LOW;
                Delayus(10);       
                SPI_CLK_LOW;        //從機需要在下降沿取數據
                Delayus(10);       
        }
        SPI_CS_HIGH;
}



void ATT7053_Init(void)
{
        SPI_Write(0x32, 0xBC);                //Open written-protect 只能操作 40H 到 45H 的校表參數寄存器
        SPI_Write(0x43, 0xFA);                //I1 ADC Enable
//  SPI_Write(0x43, 0xDF);                        //close bor

        SPI_Write(0x42, 0x01FF);        //I1Angle Enable, I2Angle Enable
        SPI_Write(0x32, 0xA6);                //Open written-protect 只能操作 50H 到 71H 的校表參數寄存器
        SPI_Write(0x59, 0x0001);        //模擬通道增益I1*2       
       
        Delayms(10);
        SPI_Read(0x06);


}

ATT7053.zip

1.57 KB, 下載次數: 146, 下載積分: 黑幣 -5

實際項目代碼

回復

使用道具 舉報

ID:502297 發表于 2019-4-1 11:38 | 顯示全部樓層
值得學習一下。提升一下自己
回復

使用道具 舉報

ID:245354 發表于 2019-6-11 18:21 | 顯示全部樓層
請問有沒有試過不使用cs腳啊?
回復

使用道具 舉報

ID:713086 發表于 2020-3-21 21:05 | 顯示全部樓層
厲害,標定看著很復雜,一定很麻煩
回復

使用道具 舉報

ID:159600 發表于 2020-10-7 23:17 | 顯示全部樓層

值得學習一下。提升一下
回復

使用道具 舉報

ID:3666 發表于 2020-10-27 14:43 | 顯示全部樓層
這個東西如何計算電壓呀
回復

使用道具 舉報

ID:78522 發表于 2022-12-22 09:40 | 顯示全部樓層
標定最頭疼,搞了一天也沒有標定好,同一電器電流標定好了, 換其他電流,就不對了,也不知道怎么搞
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天干天天爱天天爽 | 中文字幕电影在线观看 | 美女中文字幕视频 | 欧美成人激情 | 精品久久一区 | 精品一区二区三区四区 | 成人性视频在线播放 | 欧美福利久久 | 亚洲综合久久精品 | 国产精品久久久久久久久久久久 | 黄色大片在线免费观看 | 在线成人免费视频 | 91啪影院| 日韩成人在线观看 | 日韩欧美精品在线 | 怡红院免费的全部视频 | 亚洲日韩中文字幕一区 | 久久精品国产一区二区 | 日本超碰| 日韩精品一区在线 | 中文字幕在线视频网站 | 国产在线一区二 | 亚洲欧洲精品一区 | 久久大陆 | 亚洲高清一区二区三区 | 国产精品久久影院 | 一级a性色生活片久久毛片 午夜精品在线观看 | 一区二区三区视频在线免费观看 | 性一爱一乱一交一视频 | 日韩欧美一区二区三区免费看 | 人人九九精 | 国产欧美日韩一区 | 欧美精品成人影院 | 日韩一区二区三区视频在线观看 | 在线观看av不卡 | www.47久久青青 | 精品久久99| 国产毛片在线看 | 日本不卡一区二区三区在线观看 | 国产精品美女久久久久久不卡 | 99re视频在线免费观看 |