亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪(fǎng)問(wèn)板塊 發(fā)新帖
查看: 2110 | 回復(fù): 3
打印 上一主題 下一主題

[硬件問(wèn)題] [求助帖]Linux+ARM 驅(qū)動(dòng) DS18B20的問(wèn)題求助 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2013-04-14 20:03 |只看該作者 |倒序?yàn)g覽
本人軟件出身,硬件不怎么會(huì),準(zhǔn)備在arm開(kāi)發(fā)板上驅(qū)動(dòng)ds18b20傳感器,這是網(wǎng)上找的單片機(jī)對(duì)DS18B20操作流程:

1、 復(fù)位:首先復(fù)位,由單片機(jī)給DS18B20單總線(xiàn)至少480uS的低電平信號(hào)。當(dāng)DS18B20接到此復(fù)位信號(hào)后則會(huì)在15~60uS后回發(fā)一個(gè)芯片的存在脈沖。

2、存在脈沖:在復(fù)位后,單片機(jī)將數(shù)據(jù)單總線(xiàn)拉高,在15~60uS后接收一個(gè)60~240uS的低電平信號(hào)存在脈沖。通信雙方達(dá)成了基本的協(xié)議,之后是單片機(jī)與DS18B20間的數(shù)據(jù)通信。如果復(fù)位低電平的時(shí)間不足或是單總線(xiàn)的電路斷路都不會(huì)接到存在脈沖,在設(shè)計(jì)時(shí)要注意意外情況的處理。

3、單片機(jī)發(fā)送ROM指令:雙方達(dá)成協(xié)議之后將進(jìn)行交流,ROM指令共有5條,一個(gè)工作周期發(fā)一條,ROM指令分別是讀ROM數(shù)據(jù)、指定匹配芯片、跳躍ROM、芯片搜索、報(bào)警芯片搜索。ROM指令為8位長(zhǎng)度,功能是對(duì)片內(nèi)的64位光刻ROM進(jìn)行操作。其主要目的是為了分辨一條總線(xiàn)上掛接的多個(gè)器件并作處理。

4、單片機(jī)發(fā)送存儲(chǔ)器操作指令:在ROM指令發(fā)送給18B20之后,接著(不間斷)發(fā)送存儲(chǔ)器操作指令。操作指令同樣為8位,共6條,分別是寫(xiě)RAM數(shù)據(jù)、讀RAM數(shù)據(jù)、將RAM數(shù)據(jù)復(fù)制到EEPROM、溫度轉(zhuǎn)換、將EEPROM中的報(bào)警值復(fù)制到RAM、工作方式切換。存儲(chǔ)器操作指令的功能是命令18B20工作,是芯片控制的關(guān)鍵。

5、執(zhí)行或數(shù)據(jù)讀寫(xiě):一個(gè)存儲(chǔ)器操作指令結(jié)束后進(jìn)行指令執(zhí)行或數(shù)據(jù)的讀寫(xiě),此操作視存儲(chǔ)器操作指令而定。如執(zhí)行溫度轉(zhuǎn)換指令則單片機(jī)必須等待18B20執(zhí)行其指令,一般轉(zhuǎn)換時(shí)間為500uS。如執(zhí)行數(shù)據(jù)讀寫(xiě)指令則需要嚴(yán)格遵循18B20的讀寫(xiě)時(shí)序來(lái)操作。

以下是參考其他人arm驅(qū)動(dòng)ds18b20的例子,看到讀溫度函數(shù)就不懂了,求助各位講解:
void tmreset (void)
{      

        s3c_gpio_cfgpin(S3C64XX_GPE(0), S3C_GPIO_SFN(1));
        gpio_set_value(S3C64XX_GPE(0), 1);
        udelay(100);
        gpio_set_value(S3C64XX_GPE(0), 0);
        udelay(600);
        gpio_set_value(S3C64XX_GPE(0), 1);
        udelay(100);
        s3c_gpio_cfgpin(S3C64XX_GPE(0), S3C_GPIO_SFN(0));
}  

void tmwbyte (unsigned char dat)
{                       
        unsigned char j;
        s3c_gpio_cfgpin(S3C64XX_GPE(0), S3C_GPIO_SFN(1));
        for (j=1;j<=8;j++)      
        {
                gpio_set_value(S3C64XX_GPE(0), 0);
                udelay(1);
                if((dat&0x01)==1)
                {
                        gpio_set_value(S3C64XX_GPE(0), 1);                    
                }          
                else
                {

                }
                udelay(60);
                gpio_set_value(S3C64XX_GPE(0), 1);
                udelay(15);
                dat = dat >> 1;
        }  
        gpio_set_value(S3C64XX_GPE(0), 1);
}

unsigned char tmrbyte (void)
{   
        unsigned char i,u=0;      

        for (i=1;i<=8;i++)      
        {

                s3c_gpio_cfgpin(S3C64XX_GPE(0), S3C_GPIO_SFN(1));
                gpio_set_value(S3C64XX_GPE(0), 0);
                udelay(1);
                u >>= 1;
                gpio_set_value(S3C64XX_GPE(0), 1);
                s3c_gpio_cfgpin(S3C64XX_GPE(0), S3C_GPIO_SFN(0));
                if( gpio_get_value(S3C64XX_GPE(0)))    u=u|0x80;
                udelay(60);  
        }  
        return (u);   
}

void DS18B20PRO(void)         
{   
        unsigned char a,b;
        tmreset();         
        udelay(420);
        tmwbyte(0xcc);        
        tmwbyte(0x44);      
        mdelay(750);
        tmreset ();   
        udelay(400);
        tmwbyte (0xcc);  
        tmwbyte (0xbe);  
        a = tmrbyte ();
        b= tmrbyte ();
        sdata = a/16+b*16;   
}       

static ssize_t  s3c6410_18b20_read(struct file *filp, char *buf, size_t len, loff_t *off)

{
        DS18B20PRO();
        *buf=sdata;
        return 1;
}
目前是以下兩個(gè)問(wèn)題:
1.為什么原操作方法是:“首先復(fù)位,由單片機(jī)給DS18B20單總線(xiàn)至少480uS的低電平信號(hào)”,但是具體操作時(shí)先輸出了高電平信號(hào),并有延時(shí)(幾乎所有的操作都這樣)?
2.void tmwbyte (unsigned char dat)函數(shù)不理解,操縱方法是:“當(dāng)DS18B20接到此復(fù)位信號(hào)后則會(huì)在15~60uS后回發(fā)一個(gè)芯片的存在脈沖”,具體操作時(shí)函數(shù)內(nèi)為什么要有循環(huán)?以及函數(shù)的大體意思。
跪謝大神~~~~

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2013-04-14 23:42 |只看該作者
因?yàn)閐18b20是單總線(xiàn)通訊的溫度傳感器,其邏輯0與 1是通過(guò)脈沖的間隔來(lái)判斷的

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2013-04-15 20:30 |只看該作者
不知道二樓兄能不能推薦一下我看看哪方面的知識(shí)或者書(shū)籍能夠好得理解這個(gè)問(wèn)題,軟件出身,理解有點(diǎn)困難,多謝啦~~~回復(fù) 2# jobszheng5


   

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2013-04-18 09:12 |只看該作者
哦,明白了,這么簡(jiǎn)單的問(wèn)題,在這里丟人了~~~~
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP