打印

ad7746设置的问题。

[复制链接]
3988|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jiuri|  楼主 | 2012-5-24 13:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序如下,通过i2c设置ad7746。i2c程序应该没问题,因为能读出7746默认值。如果先调用下面程序后延时再读时就“noack”了,一个也读不出,如果调用下面程序后去轮询7746的rdy脚,此脚无论时间等多久都不会有下降沿出现。如果把下面程序的最后那个子程序(启动转换)屏蔽就能再次读出所改写的内容。
搞了好多天,卡在这了。用过ad7746的大侠帮忙指点一下下,谢谢!


ad7746_write: ;给ad7746设定,      
    acall smbus_rest;ad7746复位   ,给7746写0xbf进去            
    acall delay   ;延时5us
    mov r2,#0ah
    mov r3,#32h  ;0x0a内写入031h,capf=110更新频率,md=010单次
    acall smbus_write;写# 到7746  地址去      
    acall delay      
    mov r2,#0bh
    mov r3,#0b7h  ;0x0b内写入0b7h,  dac_a设置
    acall smbus_write;写# 到ad7746  地址去     
    acall delay   
    mov r2,#9h
    mov r3,#0bh  ;0x09内写入0bh,第一个路电容打开
    acall smbus_write;写#80h到ad7746的0x07地址去      
    acall delay
    mov r2,#7h
    mov r3,#80h  ;0x07内写入80h,启动转换
    acall smbus_write;写#80h到ad7746的0x07地址去   
    ret

相关帖子

沙发
jiuri|  楼主 | 2012-5-24 19:38 | 只看该作者
期待回复喽:(

使用特权

评论回复
板凳
jiuri|  楼主 | 2012-5-25 22:07 | 只看该作者
晕哦,就没有一位大侠伸出援助之手吗

使用特权

评论回复
地板
wangyy608| | 2012-5-25 23:31 | 只看该作者
根据你提供的信息,也很难就知道问题的所在。
确定I2C的读写操作OK,
仔细阅读技术手册,核对参数的配置是否正确,
与厂家联系提供DEMO程序

使用特权

评论回复
5
jiuri|  楼主 | 2012-5-26 09:11 | 只看该作者
谢谢4楼朋友回复。
小弟以为能读出默认值i2c读程序就ok了。
写0x07寄存器之外的寄存器后也都能读所写内容,是不是写法也就没问题了嘛,唯独写0x07寄存器后好象7746就死机一样!会不会7746坏了?按理来讲坏了应该读不出默认值及改写后的值嘛,难道就0x07这个寄存器坏了?看来要再买几片回来试试。

使用特权

评论回复
6
jiuri|  楼主 | 2012-5-26 13:46 | 只看该作者
现付上全部程序(汇编的哦)。里面有io口模拟的i2c,f340的uart0。i2c程序应该没问题,也许有错,但查不出。项目搁浅了。问厂家也没下文。哎
8051f340_ad7746_232.rar (3.35 KB)

使用特权

评论回复
7
wangyy608| | 2012-5-26 15:21 | 只看该作者
单片机和AD都没用过,看了下I2C通信的程序
SCL和SDA的输入输出状态可能有问题

使用特权

评论回复
8
jiuri|  楼主 | 2012-5-26 17:20 | 只看该作者
嗯,谢谢wangyy608。搞了快一个月了,晕不。最失败的一次。对那芯片还不熟悉,交叉开关应该是很好的东东,就是输入输出有些晕,不过i2c外接都有上拉电阻。明天休息一天,周一继续,一定搞出来哦。呵呵。

使用特权

评论回复
9
dqyubsh| | 2012-5-27 16:22 | 只看该作者
其实I2C很烦人的,不像SPI那么直观,软件容易出错。我的原则是,如果新上手一款单片机,没有成熟的代码,项目工期很急的话,尽可能不用I2C。

我建议去厂家找些成熟的I2C软件模块,参照着改一下,不要闭门造车,没意义。

使用特权

评论回复
10
wangwj322| | 2015-7-7 14:12 | 只看该作者
我也遇到了同样的问题,不知道楼主现在解决了没有?

使用特权

评论回复
11
1326873176| | 2020-6-9 17:17 | 只看该作者
我也遇到了这样的问题,寄存器都配置对了,但是读不出数据,想问一下楼主有没有解决

使用特权

评论回复
12
ayb_ice| | 2020-6-10 10:18 | 只看该作者
注意应答与非应答的区别

使用特权

评论回复
13
LSJ1961| | 2020-11-14 10:17 | 只看该作者
我也在用AD7745,寄存器可写可读,包括0x07.程序如下,请参考:
;
;
        LIST        P=16F1823
        INCLUDE        "P16F1823.INC"
XORX        EQU        74H                ;异或校验码
;-----------------------------------主程序
        ORG        0X00                ;
        NOP                        ;
       
        GOTO        MAIN
;--------------------------------------
READ6       
        CALL        JCKX                ;检测空闲
        BANKSEL        PIR1                ;
        BCF        PIR1,SSP1IF        ;
        BANKSEL        SSP1CON2        ;
        BSF        SSP1CON2,SEN        ;启动信号
        BANKSEL        PIR1                ;
        BTFSS        PIR1,SSP1IF        ;
        GOTO        $-1                ;启动信号结束
;FSQJ                                ;发送器件+写
        MOVLW        90H                ;
        BANKSEL        SSP1BUF                ;
        MOVWF        SSP1BUF                ;
        CALL        JCYD                ;发送器件+写,结束
;FSDZ                                ;发送地址
        MOVLW        07H                ;
        BANKSEL        SSP1BUF                ;
        MOVWF        SSP1BUF                ;
        CALL        JCYD                ;发送地址结束
        CALL        DELAY                ;延时
;RESTART
        CALL        JCKX                ;
        BANKSEL        PIR1                ;
        BCF        PIR1,SSP1IF        ;
        BANKSEL        SSP1CON2        ;
        BSF        SSP1CON2,RSEN        ;重启动信号
        BANKSEL        PIR1                ;
        BTFSS        PIR1,SSP1IF        ;
        GOTO        $-1                ;重启动信号结束
;READ1
        MOVLW        91H                ;发送器件+读
        BANKSEL        SSP1BUF                ;
        MOVWF        SSP1BUF                ;
        CALL        JCYD                ;发送器件+读,结束
        CALL        JSXH                ;接收数据
        BANKSEL        SSP1BUF                ;
        MOVF        SSP1BUF,W        ;
        MOVWF        75H                ;接收寄存器1
        CALL        FSYD                ;发送应答
        CALL        JSXH                ;
        BANKSEL        SSP1BUF                ;
        MOVF        SSP1BUF,W        ;
        MOVWF        76H                ;接收寄存器2
        CALL        FSYD                ;       
        CALL        JSXH                ;
        BANKSEL        SSP1BUF                ;
        MOVF        SSP1BUF,W        ;
        MOVWF        77H                ;接收寄存器3
        CALL        FSYD                ;
        CALL        JSXH                ;
        BANKSEL        SSP1BUF                ;
        MOVF        SSP1BUF,W        ;
        MOVWF        78H                ;接收寄存器4
        CALL        FSYD                ;
        CALL        JSXH                ;
        BANKSEL        SSP1BUF                ;
        MOVF        SSP1BUF,W        ;
        MOVWF        79H                ;接收寄存器5
        CALL        FSYD                ;
        CALL        JSXH                ;
        BANKSEL        SSP1BUF                ;
        MOVF        SSP1BUF,W        ;
        MOVWF        7AH                ;接收寄存器6
        BANKSEL        PIR1                ;
        BCF        PIR1,SSP1IF        ;
        BANKSEL        SSP1CON2        ;
        BSF        SSP1CON2,PEN        ;停止信号
        BANKSEL        PIR1                ;
        BTFSS        PIR1,SSP1IF        ;
        GOTO        $-1                ;停止信号完成
        BCF        PIR1,SSP1IF        ;
        RETURN
;---------------------------------------
CHSHH                                  ;初始化
        BANKSEL        ANSELA                ;
        CLRF        ANSELA                ;
        CLRF        ANSELC                ;
        BANKSEL        TRISC                ;
        BSF        TRISC,0                ;SLC
        BSF        TRISC,1                ;SDA
        BSF        TRISC,5                ;RX
        BCF        TRISC,4                ;TX
        BANKSEL        APFCON                ;
        BCF        APFCON,7        ;RC5=RX
        BCF        APFCON,2        ;RC4=TX
        BANKSEL        TRISA                ;
        BCF        TRISA,5                ;485发送
        BCF        TRISA,0                ;-识别器件工作
        BCF        TRISA,2                ;
        BANKSEL        PORTA                ;
        BSF        PORTA,0                ;
        BSF        PORTA,2                ;-识别器件工作
        BANKSEL        SSP1ADD                ;
        MOVLW        D'9'                ;
        MOVWF        SSP1ADD                ;100K波特率
        BANKSEL        SSP1STAT        ;
        BSF        SSP1STAT,7        ;100KHZ
        BCF        SSP1STAT,6        ;IIC
        BANKSEL        SSP1CON1        ;
        MOVLW        B'00101000'        ;使能IIC通讯主模式
        MOVWF        SSP1CON1        ;
        BANKSEL        OSCCON                ;
        MOVLW        B'1101010'        ;
        MOVWF        OSCCON                ;内部晶振4MHZ
;T3
        MOVLW        03H                         ;BANK3
        MOVWF        BSR                         ;
        MOVLW        D'12'                        ;19.2K(4M)
        MOVWF        SPBRGL                        ;低字节       
        MOVLW        B'10010000'                ;使能串口
        MOVWF        RCSTA                        ;使能接收,
        MOVLW        B'00100110'                ;异步,高波特率
        MOVWF        TXSTA                        ;使能发送,
        RETURN
;---------------------------------
JCYD                                ;检测应答
        BANKSEL        PIR1                ;
        BCF        PIR1,SSP1IF        ;
        BTFSS        PIR1,SSP1IF        ;
        GOTO         $-1                ;
        RETURN
;----------------------------------
JCKX                                ;检测空闲
        BANKSEL        SSP1STAT        ;
        BTFSC        SSP1STAT,2        ;正在发送?
        GOTO        $-1                ;
        BANKSEL        SSP1CON2        ;
        MOVF        SSP1CON2,W        ;
        ANDLW        1FH                ;
        BTFSS        STATUS,Z        ;空闲?
        GOTO        $-3                ;
        RETURN
;----------------------------------------
FSYD
        BANKSEL        PIR1                ;
        BCF        PIR1,SSP1IF        ;
        BANKSEL        SSP1CON2        ;
        BCF        SSP1CON2,ACKDT        ;
        BSF        SSP1CON2,ACKEN        ;发送应答信号
        BANKSEL        PIR1                ;
        BTFSS        PIR1,SSP1IF        ;
        GOTO        $-1                ;发送应答信号完成
        RETURN
;---------------------------------------------
JSXH
        BANKSEL        PIR1                ;
        BCF        PIR1,SSP1IF        ;
        BANKSEL        SSP1CON2        ;
        BSF        SSP1CON2,RCEN        ;接收信号
        BANKSEL        PIR1                ;
        BCF        PIR1,SSP1IF        ;
        BTFSS        PIR1,SSP1IF        ;
        GOTO        $-1                ;接收信号完成
        RETURN
;---------------------------------------------
DELAY        MOVLW        D'4'                ;延时3.5MS
        MOVWF        70H                ;
DELAY2        MOVLW        0FFH                ;
        MOVWF        71H                ;
DELAY1        DECFSZ        71H,F                ;
        GOTO        DELAY1                ;
        DECFSZ        70H,F                ;
        GOTO        DELAY2                ;
        RETURN
;--------------发送------------------
FSPLC       
        BANKSEL        PORTA                ;
        BSF        PORTA,5                ;置位发送

        BANKSEL        TXREG                ;
        MOVLW         B'11111100'        ;起始字符
        MOVWF        TXREG                ;发送起始字符
        CLRF        XORX                ;异或校验码清零
        CALL        DELAY                ;为通信延时
       
        MOVF        75H,W                ;高字节1
        XORWF        XORX,1                ;异或
        MOVWF        TXREG                ;发送高字节
        MOVF        76H,W                ;低字节1
        XORWF        XORX,1                ;异或
        MOVWF        TXREG                ;发送低字节
        CALL        DELAY                ;为通信延时

        MOVF        77H,W                ;高字节2
        XORWF        XORX,1                ;异或
        MOVWF        TXREG                ;发送高字节
        MOVF        78H,W                ;低字节2
        XORWF        XORX,1                ;异或
        MOVWF        TXREG                ;发送低字节
        CALL        DELAY                ;为通信延时

        MOVF        79H,W                ;高字节3
        XORWF        XORX,1                ;异或
        MOVWF        TXREG                ;发送高字节
        MOVF        7AH,W                ;低字节3
        XORWF        XORX,1                ;异或
        MOVWF        TXREG                ;发送低字节
        CALL        DELAY                ;为通信延时

        MOVLW         B'1111'                ;高字节4
        XORWF        XORX,1                ;异或
        MOVWF        TXREG                ;发送高字节
        MOVLW         B'1101'                ;低字节4
        XORWF        XORX,1                ;异或
        MOVWF        TXREG                ;发送低字节
        CALL        DELAY                ;延时,为发送留出时间
       
        MOVLW         B'1110'                ;高字节5
        XORWF        XORX,1                ;异或
        MOVWF        TXREG                ;发送高字节
        MOVLW         B'1111'                ;低字节5
        XORWF        XORX,1                ;异或
        MOVWF        TXREG                ;发送低字节
        CALL        DELAY                ;延时,为发送留出时间
       
        MOVF        XORX,W                ;异或校验码
        MOVWF        TXREG                ;
        CALL        DELAY                 ;

        MOVLW         B'11111011'        ;终止字符
        MOVWF        TXREG                ;发送终止字符
        CALL        DELAY                ;为通信延时
        RETURN
;-------------------------------------
WRITE6
        CALL        JCKX                ;检测空闲
        BANKSEL        PIR1                ;
        BCF        PIR1,SSP1IF        ;
        BANKSEL        SSP1CON2        ;
        BSF        SSP1CON2,SEN        ;启动信号
        BANKSEL        PIR1                ;
        BTFSS        PIR1,SSP1IF        ;
        GOTO        $-1                ;启动信号结束
;FSQJ                                ;发送器件+写
        MOVLW        90H                ;
        BANKSEL        SSP1BUF                ;
        MOVWF        SSP1BUF                ;
        CALL        JCYD                ;发送器件+写,结束
        BANKSEL        SSP1STAT                ;
        BTFSC        SSP1STAT,BF        ;寄存器满?
        GOTO        $-1                ;
;FSDZ                                ;发送地址
        MOVLW        07H                ;应为7
        BANKSEL        SSP1BUF                ;
        MOVWF        SSP1BUF                ;
        CALL        JCYD                ;发送地址结束
;FSSJ                                ;发送数据1
        MOVLW        B'10000000'        ;
        BANKSEL        SSP1BUF                ;
        MOVWF        SSP1BUF                ;
        CALL        JCYD                ;发送数据1结束
        MOVLW        B'0'                ;
        BANKSEL        SSP1BUF                ;
        MOVWF        SSP1BUF                ;
        CALL        JCYD                ;发送数据2结束
        MOVLW        B'1011'                ;
        BANKSEL        SSP1BUF                ;
        MOVWF        SSP1BUF                ;
        CALL        JCYD                ;发送数据3结束
        MOVLW        B'100001'                ;
        BANKSEL        SSP1BUF                ;
        MOVWF        SSP1BUF                ;
        CALL        JCYD                ;发送数据4结束
        MOVLW        B'11111111'                ;
        BANKSEL        SSP1BUF                ;
        MOVWF        SSP1BUF                ;
        CALL        JCYD                ;发送数据5结束
        MOVLW        B'0'                ;
        BANKSEL        SSP1BUF                ;
        MOVWF        SSP1BUF                ;
        CALL        JCYD                ;发送数据6结束
        BANKSEL        PIR1                ;
        BCF        PIR1,SSP1IF        ;
        BANKSEL        SSP1CON2        ;
        BSF        SSP1CON2,PEN        ;停止信号
        BANKSEL        PIR1                ;
        BTFSS        PIR1,SSP1IF        ;
        GOTO        $-1                ;停止信号完成
        BCF        PIR1,SSP1IF        ;
        RETURN
MAIN
        CALL        CHSHH
LOOP       
        CALL        WRITE6                ;写
        CALL        READ6                ;读
        CALL        FSPLC                ;
        GOTO        LOOP       
       
        END       

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

43

主题

304

帖子

0

粉丝