OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 13088|回复: 27

找个肯真心帮助在下的

[复制链接]

7

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2012-11-16
在线时间
0 小时
发表于 2013-5-5 08:45:34 | 显示全部楼层 |阅读模式

刚接触这个论坛,正好现在有一点地方弄不明白,寻求高人指点

不知道有没有人用过MCP4728这个片子,用IIC驱动的一个带四路缓冲输出的12 位电压输出DAC

本以为很简单就搞定了,可以一直拖了四五天却毫无进展,谁能给提点意见啊?小弟万分感谢!!!

下面是驱动程序,不知道哪里错了,连接方式很简单:VDD  gnd SCL SDA LDAC接地 RDY/BSY空接

下面是程序:(其中IIC用的是原子哥的就没必要贴上来了,只是驱动MCP4728的一段,方便的话大家可以尝试一下)
void MCP4728_WR(void)//500k接地输出
{
         u8 temp;
         u8 setBuf[8];
        setBuf[0]=0x94;
        setBuf[1]=0x00;
        setBuf[2]=0x92;
        setBuf[3]=0x00;
        setBuf[4]=0x93;
        setBuf[5]=0x00;
        setBuf[6]=0x94;
        setBuf[7]=0x00;


 IIC_Start();
 IIC_Send_Byte(0xc0);       //器件寻址
 IIC_Wait_Ack();

 IIC_Send_Byte(0x50);   //设置顺序写起始地址    50eeprom 00 no eeprom
 IIC_Wait_Ack();

 temp=setBuf[0]&0X0F;
 temp|=0xf0;
 IIC_Send_Byte(temp);   //1001高4位
 IIC_Wait_Ack();

 IIC_Send_Byte(setBuf[1]);   //低8位
 IIC_Wait_Ack();

 temp=setBuf[2]&0X0F;
 temp|=0xf0;
 IIC_Send_Byte(temp);   //1011高4位
 IIC_Wait_Ack();

 IIC_Send_Byte(setBuf[3]);   //低8位
 IIC_Wait_Ack();

 temp=setBuf[4]&0X0F;
 temp|=0xf0;
 IIC_Send_Byte(temp);   //1101高4位
 IIC_Wait_Ack();

 IIC_Send_Byte(setBuf[5]);   //低8位
 IIC_Wait_Ack();

 temp=setBuf[6]&0X0F;
 temp|=0xf0;
 IIC_Send_Byte(temp);   //1111高4位
 IIC_Wait_Ack();

 IIC_Send_Byte(setBuf[7]);   //低8位
 IIC_Wait_Ack();

 IIC_Stop();
}


 

 

如果觉得生活是一种刁难,一开始就输了。如果觉得刁难是一种雕刻,迟早都会赢的
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2012-11-16
在线时间
0 小时
 楼主| 发表于 2013-5-5 08:54:27 | 显示全部楼层
...是不是我起的有点早了?
如果觉得生活是一种刁难,一开始就输了。如果觉得刁难是一种雕刻,迟早都会赢的
回复 支持 反对

使用道具 举报

7

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2012-11-16
在线时间
0 小时
 楼主| 发表于 2013-5-5 09:17:00 | 显示全部楼层
额.....浏览都到11了,除了我自己没人回复呀。。。在线急等!!!
如果觉得生活是一种刁难,一开始就输了。如果觉得刁难是一种雕刻,迟早都会赢的
回复 支持 反对

使用道具 举报

28

主题

125

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
260
金钱
260
注册时间
2013-4-14
在线时间
1 小时
发表于 2013-5-5 09:17:25 | 显示全部楼层
回复【2楼】飘散的羽:
---------------------------------
我是菜鸟,,我不会,,你起得太早了,,,你的搞不出来不如看看我的帖子问题帮我看看把
我可以一辈子都呆在家里不出来么?
回复 支持 反对

使用道具 举报

7

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2012-11-16
在线时间
0 小时
 楼主| 发表于 2013-5-5 09:26:44 | 显示全部楼层
回复【4楼】杨帆:
---------------------------------
额。。。我的比较着急,晚上都睡不着觉了。。。愁死我算了,你的帖子在哪里?
如果觉得生活是一种刁难,一开始就输了。如果觉得刁难是一种雕刻,迟早都会赢的
回复 支持 反对

使用道具 举报

28

主题

125

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
260
金钱
260
注册时间
2013-4-14
在线时间
1 小时
发表于 2013-5-5 09:31:53 | 显示全部楼层
那你做你的吧,,我再自己搞搞,,为什么每块板子都让我这么伤心。。。。。。。。。
加油咯。
我可以一辈子都呆在家里不出来么?
回复 支持 反对

使用道具 举报

7

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2012-11-16
在线时间
0 小时
 楼主| 发表于 2013-5-5 09:42:37 | 显示全部楼层
我的依然无人问津....
如果觉得生活是一种刁难,一开始就输了。如果觉得刁难是一种雕刻,迟早都会赢的
回复 支持 反对

使用道具 举报

7

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2012-11-16
在线时间
0 小时
 楼主| 发表于 2013-5-5 10:02:23 | 显示全部楼层
愁,大家都睡醒了哇
如果觉得生活是一种刁难,一开始就输了。如果觉得刁难是一种雕刻,迟早都会赢的
回复 支持 反对

使用道具 举报

7

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2012-11-16
在线时间
0 小时
 楼主| 发表于 2013-5-5 10:10:19 | 显示全部楼层
有没有人有兴趣研究下啊,需要什么资料我都可以提供的~
如果觉得生活是一种刁难,一开始就输了。如果觉得刁难是一种雕刻,迟早都会赢的
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-5 10:13:04 | 显示全部楼层
没用过这个芯片。
但是给你个思路。
既然是IIC器件,在调试不成功的时候,应该考虑2个方向:
1,硬件电路是不是有问题。
2,芯片是不是损坏。
硬件连接,请检查原理图。
芯片是不是损坏,可以用IIC通信检查,IIC都会有应答的,那你检测应答,如果应答都没有,说明这个IIC通信就不成功,自然后面的代码都是白搭。
应答没有的时候,检查电路,代码,最后也要怀疑是不是芯片挂了。
总之,做什么事情都可能遇到问题,关键是你分析问题的能力,这也是现在很多所谓大学生高材生所缺乏的...
天天玩游戏,能分析个鸟问题。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2012-11-16
在线时间
0 小时
 楼主| 发表于 2013-5-5 10:22:54 | 显示全部楼层
回复【10楼】正点原子:
---------------------------------
谢谢原子哥的细心解答,这个片子很简单,硬件不会有什么问题,芯片我换了3个了,这些我都尝试过,至于IIC,我用的是你的例程,就是直接从MINI板上引了俩个线接到片子上的,我特意插上液晶屏观察了一下,IIC功能正常。总不至于转接过去就失灵的吧?
还有网上有MCP4728的评估,我是按照这个来写的代码。其实能想的问题我都有想过,实在是不行了,这几天没睡过一个好觉。感觉要奔溃了。。。一个很简单的东西,我搞不定了。。。。
如果觉得生活是一种刁难,一开始就输了。如果觉得刁难是一种雕刻,迟早都会赢的
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-5 10:45:39 | 显示全部楼层
回复【11楼】飘散的羽:
---------------------------------
你怎么测试的IIC功能正常?
判断标准是什么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-5 10:46:01 | 显示全部楼层
你写入MCP4728的值,读出来校验下,你看看对不对?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2012-11-16
在线时间
0 小时
 楼主| 发表于 2013-5-5 10:53:43 | 显示全部楼层
回复【13楼】正点原子:
---------------------------------
例程不会有错的吧?我这里没有示波器,看不到信号....但是就直接飞俩个线过去接到片子上,这不就行了?

这是个4路的DA,那么我写进去值,应该这4路会有电压输出吧?但是我测不到,现在就纠结到这个地方了,不知道我理解的对不对....
如果觉得生活是一种刁难,一开始就输了。如果觉得刁难是一种雕刻,迟早都会赢的
回复 支持 反对

使用道具 举报

7

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2012-11-16
在线时间
0 小时
 楼主| 发表于 2013-5-5 10:54:37 | 显示全部楼层
回复【14楼】飘散的羽:
---------------------------------
从MINI开发板的IIC上引出俩个线,接到MCP4728上的SCL跟SDA
如果觉得生活是一种刁难,一开始就输了。如果觉得刁难是一种雕刻,迟早都会赢的
回复 支持 反对

使用道具 举报

7

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2012-11-16
在线时间
0 小时
 楼主| 发表于 2013-5-5 13:03:30 | 显示全部楼层
完蛋了....沉了吗???
如果觉得生活是一种刁难,一开始就输了。如果觉得刁难是一种雕刻,迟早都会赢的
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-5 13:19:23 | 显示全部楼层
回复【14楼】飘散的羽:
---------------------------------
那你先看到信号再说.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
12221
金钱
12221
注册时间
2013-3-8
在线时间
1297 小时
发表于 2013-5-5 13:52:15 | 显示全部楼层
回复【16楼】飘散的羽:
---------------------------------

void wr_head_voltage(uint8_t *vol)
{
uint8_t i;
/*允许1字节1应答模式*/
I2C_AcknowledgeConfig(I2C1, ENABLE);
for(i=0;i<8;i++)
{
/* 发送起始位 */
    I2C_GenerateSTART(I2C1, ENABLE);
    while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));/*EV5,主模式*/
I2C_Send7bitAddress(I2C1,  SA_521&0xff, I2C_Direction_Transmitter);
  while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
I2C_SendData(I2C1, i&0xff);
    while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));/*数据已发送*/
I2C_SendData(I2C1, vol);
    while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));/*数据已发送*/
   /* 停止位*/
   I2C_GenerateSTOP(I2C1, ENABLE);
delay_ms(5);
}
}

我这个是控制MAX521的IIC程序,用的是库函数,8路8位DAC。是结合原子的程序与库函数看懂后写的,已验证可以用。你自己看看芯片资料,注意下接口电平与数据传输延时,有的芯片通讯速度有要求,读写速度快慢都可能影响通讯
回复 支持 反对

使用道具 举报

2

主题

1447

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2258
金钱
2258
注册时间
2010-12-16
在线时间
206 小时
发表于 2013-5-5 23:21:10 | 显示全部楼层
高材生,没有搞懂9L原子的意思么?

1.检查有没有应答.如果没有应答,检查线路和芯片.
2.写入并读出寄存器,如果写入失败,检查时序和操作.
3.写入指定的寄存器,检查输出引脚,如果没有对应现象,检查线路.

具体到这个芯片,
1.执行5.4.4的1st,看有没有应答.
2.1.执行5.4.4所有步骤,看4th的bit4和bit0是否正确.
2.2.执行5.6.4和5.6.9,看写入和读出是否一致.
3.执行5.6.4,看引脚现象.
技术讨论请发帖 , 需要我回复请点左下的 < 回复 > 让系统通知我 . 本人不通过其他方式返回任何参数.
回复 支持 反对

使用道具 举报

27

主题

147

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2012-8-11
在线时间
0 小时
发表于 2013-5-6 00:35:08 | 显示全部楼层
i2c不是时序就是延时的问题,很是头大
回复 支持 反对

使用道具 举报

7

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2012-11-16
在线时间
0 小时
 楼主| 发表于 2013-5-6 08:30:46 | 显示全部楼层
回复【16楼】飘散的羽:
---------------------------------
呼叫原子哥,昨天我借了个示波器看了下,SDA那个信号线的电平拉不上去,我换了个电阻,依然不行,IIC代码是直接搬你的过来的,这个问题....怎么办呀?
如果觉得生活是一种刁难,一开始就输了。如果觉得刁难是一种雕刻,迟早都会赢的
回复 支持 反对

使用道具 举报

7

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2012-11-16
在线时间
0 小时
 楼主| 发表于 2013-5-6 08:31:46 | 显示全部楼层
回复【19楼】shihantu:
---------------------------------
我擦。。。太详细了,非常有用,正在试.....!!!
如果觉得生活是一种刁难,一开始就输了。如果觉得刁难是一种雕刻,迟早都会赢的
回复 支持 反对

使用道具 举报

7

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2012-11-16
在线时间
0 小时
 楼主| 发表于 2013-5-6 08:32:25 | 显示全部楼层
回复【18楼】augustedward:
---------------------------------
谢谢你,有心了,我先看下硬件,谢谢!!!
如果觉得生活是一种刁难,一开始就输了。如果觉得刁难是一种雕刻,迟早都会赢的
回复 支持 反对

使用道具 举报

7

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2012-11-16
在线时间
0 小时
 楼主| 发表于 2013-5-6 08:33:39 | 显示全部楼层
回复【21楼】飘散的羽:
---------------------------------
额..准确的来说是可以拉上来一点,就是卡在高低电平之间不动了
如果觉得生活是一种刁难,一开始就输了。如果觉得刁难是一种雕刻,迟早都会赢的
回复 支持 反对

使用道具 举报

头像被屏蔽

52

主题

440

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1237
金钱
1237
注册时间
2013-1-9
在线时间
151 小时
发表于 2013-5-6 10:17:32 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

233

主题

961

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1822
金钱
1822
注册时间
2011-10-9
在线时间
232 小时
发表于 2013-5-6 15:46:39 | 显示全部楼层
首先 把 外设焊掉  看看I2C所用的全部引脚 能否正常上拉下拉先  例如写个0xAA

如果裸脚可以拉  接上芯片不能拉  尝试加个103的上拉电阻  如果加了还是不能拉 那就是电路问题了,看看接对脚没有

以前遇到 卡在高低电平  就是半高的  一般都是IO短路   呵  我猜你这个 很可能是焊接问题 呵

回复 支持 反对

使用道具 举报

30

主题

282

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1001
金钱
1001
注册时间
2015-8-24
在线时间
241 小时
发表于 2015-10-24 16:31:05 | 显示全部楼层
楼主搞出来了吗?、IIC相关的。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2017-5-19
在线时间
0 小时
发表于 2017-5-19 09:07:28 | 显示全部楼层
楼主这个芯片搞定没?求指教呀!谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-21 02:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表