FPGA|CPLD|ASIC论坛
直播中

文岩

10年用户 50经验值
擅长:可编程逻辑 嵌入式技术 EDA/IC设计
私信 关注
[讨论]

基于SOPC的18B20温度测量

基于SOPC的18B20温度测量,求大神指导,

回帖(19)

文岩

2015-4-27 14:19:46
引用: xianyoudian 发表于 2015-4-27 12:11
知道什么?详细问题

nios ii IDE下软件中,程序不能跳出18B20复位函数,还有那个程序能不能指导一下,这个东西没做过,对niosii 的编程也不熟悉。
举报

陈华

2015-4-27 17:14:44
有些人写DS18B20的初始化函数喜欢写成初始化成功才返回,初始化失败就一直在那循环
举报

王磊

2015-4-27 22:38:48
毕业设计的时候做过
举报

文岩

2015-4-27 22:42:13
引用: 电子爱好者协会 发表于 2015-4-27 17:14
有些人写DS18B20的初始化函数喜欢写成初始化成功才返回,初始化失败就一直在那循环 ...

没有啊,就是让DQ写1延时,写0一些列操作,等待18B20相应啊,有程序参考一下吗?最好是nios ii IDE下的,
举报

陈华

2015-4-28 09:53:56
你可以把程序贴出来看看
举报

文岩

2015-4-28 10:10:34
引用: 电子爱好者协会 发表于 2015-4-28 09:53
你可以把程序贴出来看看

//*********18B20复位函数**********//
void ow_reset(void)
{
    char presence=1;
   
    while(presence)
   {
    IOWR_ALTERA_AVALON_PIO_DATA(DQ_BASE,0x01);
    delay(7);
    IOWR_ALTERA_AVALON_PIO_DATA(DQ_BASE,0x00);
    delay(550);        //550us
    IOWR_ALTERA_AVALON_PIO_DATA(DQ_BASE,0x01);
    delay(44);         //44us
    presence=IORD_ALTERA_AVALON_PIO_DATA(DQ_BASE);      //presence=0,继续下一步
   }
   delay(110);          //延时110us

IOWR_ALTERA_AVALON_PIO_DATA(DQ_BASE,0x01);
}
复位函数,不知道这么写对不对?
举报

陈华

2015-4-28 10:16:07
应该是时序问题,初始化成功presence=0之后才会跳出while循环
举报

风影浪子

2015-4-28 10:53:59
围观。。。。。。。。。。。。。。。。。。。。。。
举报

风影浪子

2015-4-28 11:05:52
围观。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
举报

文岩

2015-4-28 14:33:24
引用: 电子爱好者协会 发表于 2015-4-28 10:16
应该是时序问题,初始化成功presence=0之后才会跳出while循环

怎么改呢?指导指导
举报

文岩

2015-4-28 14:33:36
引用: 电子爱好者协会 发表于 2015-4-28 10:16
应该是时序问题,初始化成功presence=0之后才会跳出while循环

怎么改呢?指导指导
举报

文岩

2015-4-28 14:34:06
引用: 电子爱好者协会 发表于 2015-4-28 10:16
应该是时序问题,初始化成功presence=0之后才会跳出while循环

怎么改呢?指导指导
举报

文岩

2015-4-28 14:34:40
引用: 电子爱好者协会 发表于 2015-4-28 10:16
应该是时序问题,初始化成功presence=0之后才会跳出while循环

怎么改呢,指导指导,
举报

薄迪

2015-4-28 15:49:46
我有纯verilog代码。要吗
举报

jyh2882822

2015-4-28 18:36:51
围观 18B200不错,学习一下,很好
举报

陈华

2015-4-28 22:30:12
根据DS18B20的datasheet,里面有时序图
举报

文岩

2015-5-4 15:38:21
引用: haozix521 发表于 2015-4-28 15:49
我有纯verilog代码。要吗

我有vhdl的程序,有没有用sopc做的,就像单片机一样,直接把单片机用sopc builder中建立的软核控制器替换掉,这样来测温度的,
举报

文岩

2015-5-4 15:45:43
引用: 电子爱好者协会 发表于 2015-4-28 22:30
根据DS18B20的datasheet,里面有时序图

恩恩,时序看过了,没问题,对三态io口的读写怎么操作呢?
举报

mt1233210

2016-5-6 16:04:21
alt_u8 init_18b20()           //初始化18b20
{
        alt_u8 n=0;
        JP2_0->DIRECTION=1;JP2_0->DATA=0x01;        //初始状态高电平
        usleep(20);
        JP2_0->DIRECTION=1;JP2_0->DATA=0x00;        //拉低
        usleep(600);
        JP2_0->DIRECTION=1;JP2_0->DATA=0x01;        //释放总线
        usleep(40);
        JP2_0->DIRECTION=0;
        n=JP2_0->DATA&0x01;
        usleep(500);
        JP2_0->DIRECTION=1;JP2_0->DATA=0x01;
        return n;
}
===============================================================
楼主应该是没有给三态双向IO定义方向,以上是我写的初始化程序,可以用,但是我现在卡在了读数据的地方,楼主可以交流交流吗?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分