tag 标签: sn8p2743

相关博文
  • 热度 21
    2012-3-20 01:11
    1392 次阅读|
    5 个评论
      最近在做一个项目(如题),首先,使用可以多次烧写的 27E64 完成初步程序,进行测试,这个系统功能如下:  使用 27E64 完成的电路带着一个点阵显示屏幕,作为最初的双向通信测试,号称 1 千米的无线模块 NRF24L01+AP ,实际在北京海淀区环境下大致就是 300 米左右!   在此基础上,项目分为主机,分机,分机无需显示,需要测量温度 -40.0~120.0℃,还要使用 3V6 电池供电,需要把电池电压与温度值一起返回主机. 因此,就考虑使用 SN2743 来做分机,而且还有内部放大器与比较器可以使用,整个分机如火柴盒大小,实物图如下:    主机需要与 PC 机通信,并且需要较大的空间,故此,主机使用 SN8P2743 接收然后有线传输到系统主机,则就由 51 单片机来做比较合适了,整个主机结构图如下:  一套系统当前包含有一个主机,主机发起查询,分机接收到自己的地址后给予回应. 主机接收是3V6系统,仍然是 2743 负责无线通信,然后传送给 51 单片机, 51 单片机承担数据处理,显示,以及大数据量保存,同时与 PC 机的组态软件进行通信,采用 MODSUB 协议, ..... 形成一个系统. 接下来,将会重点介绍 2743 与 NRF24L01 无线模块的工作,以及 SN2743 与 51 单片机的不同电平的接口和二线通信.这里,就作为一个开头吧!仅供参考!  
  • 热度 18
    2012-3-20 00:52
    1134 次阅读|
    0 个评论
    用 2743 内部放大器与比较器做高精度电压表 关于 2743 的放大器,比较器,我之前一直在做测试,也为此发了多个帖子,基本上,连贯起来,就是往前走的路子. 最后,我利用其内部的放大器加上一只内部比较器,用双积分方式,前面添加一只 74HC4052 做模拟开关,开始做一只可以实用的电压测量仪表. 找一只 ICL7129 做的电压表,用于做比较和对照,精密监视输入信号的大小.其最低位的每字分辨力高达 10uV ,在比较廉价领域里是相对很高分辨力的了!(对比如下图)  2743 驱动一只 12232 的点阵显示屏幕,可以轻易获得需要的显示位数.整个输入范围内,从 0 mV 到接近 200mV , 实际数据如下: 从表格看,其已经达到实用程度,完全可以与同类系的测量电路比美! 但是,无论怎么说, ICL7129 或 2743 的所有数据,其最后一位可以认为是不够精确的!  它完全可能是更小一位四舍五入得到的结果,因此,我们也就认为表格内的输入与读数可能存在至少 ±1 个字的可能误差!  ------ 需要有分辨力 1uV 的监视仪表才可以明白其中秘密! 我也使用过 SN 的 1907 ,1917 等号称 16 位分辨力的芯片,实际对比,就不如这里的好了! ---- 也许,我使用 19*7 不够熟练,存在失误! 说明一下:这个测量方案将会用于高压电网的测量仪器,故此,屏幕上显示的单位符号写作: kV ! (不必理会单位!) ------以上仅供参考! 全部资料合并提供免费下载.
  • 热度 12
    2012-3-20 00:29
    1042 次阅读|
    0 个评论
    SN8P2743 的比较器+放大器初试 在昨天测试 2743 比较器的基础上,考虑到付诸实用,决定按照标准双积分测量方式进行测试.. 要搞双积分,就要使用积分器,恰好,2743 本身就有一个相当不错的放大器,于是,首先利用放大器达成一个积分器,再利用一个 TL431 产生一个精密稳压标准电压,并且经过电阻分压到0.5V,作为反积分电压. 而正向积分电压就分压到0.25V . 由于双积分测量需要使用开关切换输入的正向积分,信号,反向积分等几种不同的输入电压,所以,在放大器的同相输入端加上一只 74HC4052 ,它是一只 2*4 路模拟开关,这里仅仅使用其中 4 路转1就可以了! 使用 243 的内部振荡器,代码选项是 16/4MHZ ,每指令耗时约 0.25uS . 利用定时器 T0 ,选择预分频为 #70H=0.5uS .正向积分时间选择=7000H ,信号电压选择 0~100mV ,每隔10mV作为一个输入测试点,然后,逐一进行运行,记录,得到下面具体数据:   这个数据就很实用了,它的线性,分辨力,测量速率都是非常非常不错的,完全达到实用要求! 表格中,相邻 2 格就是 10mV 的读数,一般在 114~115 字/mV  左右,而且比较均匀,几乎没有什么非线性! 按照这个数进行计算,每个字的最大分辨力就是 8.7uV , 常用归一化到 10uV/字 是完全可以的,此时,它就比 ICL7107 的分辨力还要高一个数量级! 相当于 ICL7129 的分辨力! 而且,其每次转换耗时大致是 #7000H*0.5uS=14.336mS ,取预留余地值=15mS ,相当于每分钟可以转换 66.6 次. 可以毫不夸张地说:一只SN8P2743 + 一只 74HC4052 + 一只 24C02 ,就完全可以组合成一套非常好的廉价优质仪器仪表电路, 其应用前景是很广阔的! 有关双积分的工作原理,请自行参考有关书籍. ----- 这是许许多多集成 AD 电路的应用核心,例如: ICL7106 , ICL7107 , ICL7135 , ICL7129(多重积分) ..... 都是这种结构. 其对供电小范围变化不敏感,对 50/60HZ 电网频率,对外部杂讯等都有极强的抑制能力,(可以安排工作周期接近干扰频率!), 这就是为什么丢弃芯片自带 12 位 AD 不用的原因! (因为太差!)-------仅供参考!  SN8P2743 比较器+放大器测试 原理图 关于 SN8P2743 比较器+放大器测试 ,前面已经发布了 3 个帖子,限于当时时间关系,没有附上原理图,故此,在这里补上原理图. 图 1 : 2743 内部的一个放大器与三个比较器的示意图,它明明白白地展示了放大器,比较器与芯片具体引脚的关系:  提示:比较器的有些引脚可以不占用外部的实际引脚,通过使用内部参考和通过对应状态标志来获取等同于硬件引脚的信息.因此,有 2 个比较器仅仅需要使用一只端口就可以构成电路应用. 实在是最小硬件结构!   图 2 : 该图是我进行 uV 级电压测量的测试原理图,通过外部附加一只模拟多路开关,构成了大名鼎鼎的双积分测量,分辨力可以高达< 10uV/字 ,是非常廉价优质的一种应用. 下一节:  用 2743 内部放大器与比较器做高精度电压表 ----- 实际应用项目
  • 热度 12
    2012-3-20 00:12
    1018 次阅读|
    0 个评论
    接  汇编测试程序: B_COM0SS:;比较器CM0:         CLR         CM0M ; 清CM0M 寄存器。; 复位比较器CM0。 ;设置比较器CM0 的功能模式。 ;B0BCLR         FCM0SF ; 普通比较器模式。         B0BSET         FCM0SF ; 特殊功能模式。 ;设置比较器CM0 的输出引脚。          B0BCLR  FCM0OEN ; 禁止比较器CM0 的输出引脚。 ---- 没有输出引脚 ;        B0BSET         FCM0OEN ; 使能比较器CM0 的输出引脚。 ;比较器不要外部输出引脚时,接口板上芯片插座引脚是普通I/O,比较器引脚则仍然是比较器引脚. ;比较器使用外部输出引脚时,接口板上芯片插座引脚=比较器引脚. ;仅仅 2 个引脚 ( IN+_IN- )就可以构成一个比较器!         ; 设置比较器CM0 中断触发沿。 B0BCLR   FCM0G ; 下降沿。由高变低(CM0P<CM0N). ;        B0BSET         FCM0G ; 上升沿。比较器输出状态由低变高(CM0P>CM0N). ;设置比较器CM0 输出de-bounce。         MOV         A,#00H ; 通过CM0D 设置比较器CM0 输出de-bounce。         B0MOV         CMDB0,A         B0BCLR         FCM0IRQ; 清CM0IRQ。 ;使能比较器CM0 和中断功能。         B0BSET         FCM0IEN ; 使能比较器CM0 中断功能。         B0BSET         FCM0EN ; 使能比较器CM0。         RET ;============================================================= B_COM0SS_1: ;// 比较器CM1:         CLR         CM1M ; 清CM1M 寄存器。; 复位比较器CM1。 ; 设置比较器CM1 正极输入端。 通过CM1RS 设置比较器CM1 正极输入端。 ;000=CM1P 引脚为比较器正极输入引脚,GPIO 功能被屏蔽,       ;  MOV         A,#00000111B ; 100B=4.0V -- 读数=105709       ;  MOV         A,#00000110B ; 100B=3.5V -- 读数=79147       ; MOV         A,#00000101B ; 100B=3.0V -- 读数=60305       ; MOV         A,#00000100B ; 100B=2.5V -- 读数=45723       ;  MOV         A,#00000011B ; 11B=2.0V -- 读数=33659      ;  MOV         A,#00000010B ; 10B=1.5V -- 读数=23601        MOV         A,#00000001B ; 10B=1.0V -- 读数=14908         B0MOV         CM1M,A   ; ---- 没有输入+ 引脚         ; 设置比较器CM1 功能模式。         B0BCLR         FCM1SF ; 普通比较器。 ;B0BSET         FCM1SF ; 特殊功能。         ; 设置比较器CM1 输出引脚。         B0BCLR         FCM1OEN ; 禁止。 ---- 没有输出引脚       ;  B0BSET         FCM1OEN ; 使能。 ;比较器不要外部输出引脚时,接口板上芯片插座引脚是普通I/O,比较器引脚则仍然是比较器引脚. ;比较器使用外部输出引脚时,接口板上芯片插座引脚=比较器引脚. ;仅仅一个 IN- 就可以构成一个比较器! ;设置比较器CM1 中断触发沿。         B0BCLR         FCM1G ; 下降沿。翻转=2.552V/2.570V ; B0BSET         FCM1G ; 上升沿。翻转=2.552V/2.570V         ; 设置比较器CM1 输出de-bounce。         MOV         A,#00H ; 通过CM1D 设置比较器CM1 输出de-bounce。         B0MOV         CMDB0,A         ; 清CM1IRQ。         B0BCLR         FCM1IRQ         ; 使能比较器CM1 和中断功能。         B0BSET         FCM1IEN ; 使能比较器CM1 中断功能。         B0BSET         FCM1EN ; 使能比较器CM1。         RET ;*************************************************************** B_IRS:         H_PUSH ;比较器1 中断         BS1        FCM1IEN ; 使能比较器CM0 中断功能。         JMP        B_IRST0         BS1        FCM1IRQ; 清CM0IRQ。         JMP        B_IRST0         ZB0        FCM1IRQ; 中断发生时,FCM0OUT 并不对!还没有发生翻转就中断了!         BS0        FCM1OUT;IN+>IN- 则=1,否则=0!--- 输入脚加滤波电容就很好了! 0.8mV 动作!         JMP        B_IRST0         Z2B0         FT0ENB,FT0IEN         ZB0        FP01         ZB0        FCM1IEN         JMP        B_IRQT01 B_IRST0:         BS1        FT0IEN         JMP        B_EXISR B_IRQT01:         BS1        FT0IRQ         JMP        B_EXISR         ZB0        FT0IRQ         INCMS        SSSL         JMP        @F         INCMS        SSSM         JMP        @F         INCMS        SSSH @@:         NOP         NOP         NOP         JMP        B_EXISR ;------------------------------------------------------------------------ ;比较器0 中断         BS1        FCM0IEN ; 使能比较器CM0 中断功能。         JMP        B_EXISR         BS1        FCM0IRQ; 清CM0IRQ。         JMP        B_EXISR         ZB0        FCM0IRQ; 中断发生时,FCM0OUT 并不对!还没有发生翻转就中断了!         BS0        FCM0OUT;IN+>IN- 则=1,否则=0!--- 输入脚加滤波电容就很好了! 0.8mV 动作!         JMP        B_EXISR         NOP         NOP         NOP B_EXISR:         H_POP         RETI ;************************************************* 仅供参考!  
  • 热度 13
    2012-3-20 00:09
    1155 次阅读|
    0 个评论
    紧接(2)  SN8P2743 的比较器初试: 接着,对可以一个引脚就用起来的比较器 1 进行测试,通过软件选择内部参考的 CM1M 寄存器如下: 09DH 位7 位6 位5 位4 位3 位2 位1 位0 CM1M CM1EN CM1OEN CM1OUT CM1SF CM1G CM1RS2 CM1RS1 CM1RS0 读/写 R/W R/W R/W R/W R/W R/W R/W R/W 复位后 0 0 0 0 0 0 0 0 位 CM1RS :比较器CM1 正极电压选择控制位。 000=CM1P 引脚为比较器正极输入引脚,GPIO 功能被屏蔽, 001=内部0.2*Vdd,CM1P 是I/O引脚, 010=内部0.3*Vdd,CM1P 是I/O引脚, 011=内部0.4*Vdd,CM1P 是I/O引脚, 100=内部0.5*Vdd,CM1P 是I/O引脚, 101=内部0.6*Vdd,CM1P 是I/O引脚, 110=内部0.7*Vdd,CM1P 是I/O引脚, 111=内部0.8*Vdd,CM1P 是I/O引脚。 每一种内部参考我都试过,动作速率非常快! 事情到这里,我就联想到其在实际测量电路上是否可以满足使用要求 ------ 分辨力可以达到多少呢? 我搭接了一个恒流源,大约电流在 10 uA , 对一个 47u 的电容器恒流充电,这就可以产生一个随时间升高的电压,把这个电压输入到比较器 1 的反相输入引脚. 解决了充电问题,还得有放电通道啊! 恰好, 2743 有一个开漏输出引脚 P01 ------ 什么叫开漏? 就是仅仅具有输出低电平的拉电流功能,不能输出高电平,用在这里给电容器放电简直天衣无缝! 恰到好处! 我使用内部 16/4MHZ 的时钟,利用定时器 T0 帮助计数,得到下面一份表格:----- 每一个数据都是实测来的哦!  从内部参考 1.0V 开始, 到内部参考 4.0V 为止, 一共测量到 7 个数据, 每 2 格数据之差就是输入电压 0.5V 之差的读数, 按照计算,其最大分辨力达到了 21.746uV/字 . 计算一下, 12 位 AD 的最大分辨力是多少 ? 即使是测量 K 热电偶, 40uV/℃ 的微小电压,都可以分辨 出差不多 2 个字来! ------ 比较器 2 与比较器 1 差不多性质,就没有重复测试了! 但是,这么好的分辨力,要应用到实际项目,还有许多问题需要解决 .比较明显的是非线性, 输入电压越高, 分辨力越好,说明恒流源出了问题, 很可能已经受到饱和干扰了! (因为内部参考输入电压已经 4.0V ) . 但是,实际工程上并不需要那么大跨度的输入电压,往往几百 mV 就足够, 例如 ICL7107 ,输入±200mV 就可以了! 这就会让恒流源非线性得到很大改善! 测试表格的数据,已经展现了非常美好的应用前景!  进一步的应用,有待下次再发帖子了! 为了方便大家参考,我把芯片手册里有关比较器和放大器的内容摘录出来, 把图片尽量加大,提供给大家参考!(简体中文的呢!) 需要的请下载:  2743 的比较器与放大器.pdf ========================================================= 汇编测试程序 上面的比较器测试数据表格,由下面测试程序而来,特出补充: .CODE         ORG        0         JMP        B_RESET         ORG        8         JMP        B_IRS         ORG        10H ;===================================================================== B_RESET:;42_3:ROM:4K*16位。RAM:128字节。8层堆栈。         @RST_WDT         MOV_       STKP,#07FH         ZM0        PFLAG         ZM0        OSCM         ZM0        INTRQ         ZM0        INTEN         @RST_WDT         ZM0         Y; RAM 库 0=128RAM         MOV_        Z,#7FH @@:         CLR         @YZ         DECMS        Z         JMP         @B         CLR         @YZ ;-----------------------------------------------         MOV        A,#00H         MOV        P0,A         MOV        P4,A         MOV        P1,A         MOV_        P0M,#00H         MOV_        P4M,#0FFH         MOV_        P1M,#00H  MOV        A,#0FFH         MOV        P4UR,A         MOV        P1UR,A         MOV        P0UR,A         ZB0        FP01 ;6P,;// P0.1/PWM0,I/O P01:;漏极开路的输出引脚。PWM0WM输出引脚和脉冲输出引脚。 ;-------------------------------------------------------------- ;FT0初始化         ZB0         FT0ENB         MOV_           T0M,#70H ;16US-------70H=2,60H=4,50H=8,40H=16,30H=32         MOV_           T0C,#0;//8*250=2mS---30H=4mS.---20H=8mS--00H=32mS ;TC1初始化         ZB0         FTC0ENB         MOV_        ZZZ,#60H /*OPEN:OP Amp 放大器控制位。 0=禁止,P1.0、P1.1、P1.2 是I/O模式, 1=使能,P1.0、P1.1、P1.2 为OP-AMP 引脚。*/ ;        ZB1        FOPEN ;        CALL        B_COM0SS;测试比较器0         CALL        B_COM0SS_1;测试比较器1             ZB1          FGIE;开中断 ;============================================================== B_LOOP:         @RST_WDT         NOP         NOP         NOP         NOP         BS0        FT0IEN         JMP        B_LOOP         BS1        FCM1OUT         JMP        B_LOOP         Z3M0        SSSH,SSSM,SSSL         ZB0        FT0IRQ         ZB1        FP01         CLR           T0C ;,#0         ZB1        FCM1IEN         Z2B1         FT0IEN,FT0ENB         NOP         NOP         NOP         NOP         JMP        B_LOOP ;==================================================================== (未完待续)