在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            CS5550讀寫程序

            作者: 時(shí)間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
            最近一直在寫采集板的程序。

            采用STM32F101與外部AD CS5550

            本文引用地址:http://www.biyoush.com/article/201611/321484.htm

            剛剛接觸這個(gè)CS5550,感覺時(shí)序有點(diǎn)怪異。尤其是讀的時(shí)候,在后3個(gè)指節(jié),還要寫SYNCO.

            剛開始對(duì)這個(gè)非常不理解。后來參考了網(wǎng)上的一個(gè)程序。貌似網(wǎng)上就只有一個(gè)程序。于是有一點(diǎn)理解。就是說,單片機(jī)在讀CS5550的數(shù)據(jù)時(shí)(也就是讀MISO)還要往CS5550(MOSI)寫數(shù)據(jù)。

            CS5550讀寫大致是這樣的。

            讀寫都要32個(gè)周期。

            前8個(gè)周期讀寫都是相同的,就是都要先寫地址,然后讀/寫 地址的內(nèi)容。

            但是讀的時(shí)候在后24個(gè)周期的時(shí)候要寫3次SYNCO(11111110).這個(gè)是難點(diǎn),容易被忽略。

            剛開始我也琢磨了很久。

            后來終于柳岸花明。

            然后就是周期的選擇,我是先低后高??吹骄W(wǎng)上很多程序都是先高后低。網(wǎng)上的程序我沒有成功過??赡茏约簺]設(shè)置好。

            把自己的代碼分享下,可能還有錯(cuò)誤。大家可以指點(diǎn)下。

            總之寫程序要有耐心,可以模仿別人,但是千萬復(fù)制。往往復(fù)制的都會(huì)是有問題的。

            //延時(shí)都是精確延時(shí),時(shí)間可以短一點(diǎn)沒問題Delay_us(10)都行;

            u32 Read_CS5550(u8 Read_Addr)
            {
            u8 Num;
            u32 Read_Temp,Read_Data=0;
            CS5550_CS_1;
            Delay_us(50);
            CS5550_CS_0;
            Delay_us(100);
            //數(shù)據(jù)手冊(cè)上說每次寫的時(shí)候要等24個(gè)周期。自己試驗(yàn)后不需要等。
            for(Num=1;Num<=8;Num++)
            {
            if(Read_Addr&0x80)
            MOSI_1;
            else
            MOSI_0;
            SCK_0;
            Delay_us(1);
            SCK_1;
            Delay_us(1);
            Read_Addr=Read_Addr<<1;
            }//寫命令字

            MOSI_1;
            for(Num=1;Num<=24;Num++)
            {
            SCK_0;
            Delay_us(20);
            if(Num==7||Num==15||Num==23)//這里是難點(diǎn),自己琢磨下。
            MOSI_0;
            if(Num==8||Num==16||Num==24)//這里是難點(diǎn),自己琢磨下。

            MOSI_1;
            Read_Data=Read_Data<<1;
            Read_Temp=MISO;
            if(Read_Temp)
            Read_Data=Read_Data+1;
            Delay_us(200);
            SCK_1;
            Delay_us(200);

            }
            MOSI_1;
            CS5550_CS_1;
            Delay_us(200);
            return Read_Data;

            }
            //READ 修改。。

            void Write_CS5550(u8 Write_Addr,u32 Write_Data)
            {
            u8 num;
            CS5550_CS_1;
            Delay_us(50);

            CS5550_CS_0;
            Delay_us(50);


            MOSI_1;
            Delay_us(200);
            for(num=1;num<=8;num++)
            {
            if(Write_Addr&0x80)
            MOSI_1;
            else
            MOSI_0;
            SCK_0;
            Delay_us(200);
            SCK_1;
            Delay_us(200);

            Write_Addr=Write_Addr<<1;
            }//寫命令字
            for(num=0;num<24;num++)
            {
            if(Write_Data&0x800000)
            MOSI_1;
            else
            MOSI_0;
            SCK_0;
            Delay_us(200);
            SCK_1;
            Delay_us(200);
            Write_Data=Write_Data<<1;
            }//寫數(shù)據(jù)

            MOSI_1;
            SCK_0;
            Delay_us(100);
            CS5550_CS_1;

            }

            void Write_Command(u8 Command_Data)
            {
            u8 NUM;
            CS5550_CS_1;
            Delay_us(100);
            CS5550_CS_0;
            Delay_us(200);
            for(NUM=1;NUM<=24;NUM++)
            {
            SCK_0;
            Delay_us(200);
            SCK_1;
            Delay_us(200);

            }

            for(NUM=1;NUM<=8;NUM++)
            {
            if(Command_Data&0x80)
            MOSI_1;
            else
            MOSI_0;
            SCK_0;
            Delay_us(200);
            SCK_1;
            Delay_us(200);


            Command_Data= Command_Data<<1;
            }

            for(NUM=1;NUM<=24;NUM++)
            {
            SCK_0;
            Delay_us(200);
            SCK_1;
            Delay_us(200);

            }
            CS5550_CS_1;
            SCK_1;
            MOSI_1;

            }




            關(guān)鍵詞: CS5550讀寫程序STM32F101

            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉