奉献:“超强按键显示驱动管理芯片XX7299A”详细DIY资料,请求置酷
XX7299A是一款低价位且具有强抗干扰能力的多功能单片机外围芯片。它整合了数码管显示驱动(8 位数码管或者64 位LED)和键盘扫描(64个)控制,以及片上256字节E2PROM和256字节SRAM ,集成RTC(带有阴历和节气算法)、2路8位ADC(贴片)。XX7299A内置8MHz RC振荡电路,采用两线通信接口(兼容I2C)与单片机通信。特点如下:->高达400kHz速率的I2C总线通信接口(器件地址0x60,内部子地址自动加1);
->支持自定制I2C地址:共支持4个该器件连入同一I2C总线;
->显示驱动(8 位共阴数码管或者64 位LED)和键盘扫描(64个,内嵌去抖动电路)控制管理,数码管从左到右依次为DIG7~DIG0,支持位寻址和按键中断输出;
->显示控制支持多种显示模式,具有译码显示和闪烁控制功能,控制方法灵活。同时具有页显示切换功能,以及基于与、或、非显示特效功能,方便实现消隐等特效,均为该类芯片所特有的功能,方便应用于各类LED显示系统;
-> 256字节E2PROM,擦写寿命达10万次,且带有32字节写入缓存,实现快速写操作;
->256字节SRAM;
->RTC(0000~9999年阳历及星期,阴历2001~2050年阴历算法,2001~2050年节气算法,注意需要外加32768Hz晶振作为RTC时钟)和秒中断输出;
->芯片可设定工作在睡眠状态,睡眠时芯片停止工作,显示等都被关闭,但是当有两线通信接口(兼容I2C)通信时,或者RTC秒中断发生(当开启RTC)时均会唤醒中断,且支持触键唤醒功能;
->连接备用电池,当断电后会自动工作在RTC正常运行的睡眠状态;
->采用32脚封装时还有2路8位ADC;
->PDIP28和TQFP32两种封装;
->芯片供电电压:1.8~5.5V,典型应用为5V和3.3V;
->芯片工作温度:-40~85摄氏度;
->具有工业级抗干扰能力,适合于各类商业和工业类产品设计;
呵呵,大家想到了吧,这可是用仅6元多的M48V作的,已经使用近3年了,一直想推广。现在共享,欢迎提出意见!
固件、手册、电路(在手册里)和应用事例全部公开,请阿莫置酷吧!
点击此处下载XX7299A.rar(文件大小:358K)
sauxo@126.com 最好将您的内核源码公开,这样置酷才有意义呀,这样才能有助于提高可靠性与实用性。不过现在好像是用LED的场合不是很多呀。 顶啊!价格多少? 【2楼】 gphs 坚持到底
楼主的包里有固件,找个M48烧进去就行了~~~ To 3楼 给你个hex文件你写到芯片里是可以运行,如果有BUG或者你要加一个功能,那这时你应该怎么做呢,再写一次这个源码吗?
很多事情不是你想的那样,《软件、手册、电路(在手册里)和应用事例全部公开,请阿莫置酷吧! 》楼主这样说了,那就应该公开内核源码呀,这样才是有意义的,否则只能是把DIY者困在笼中了。
在这里我只是替初学者说出他们的心里话,其实这个源码我可以自己写,但是我现在不用LED显示的方案,按键驱动我有自己的方式。所以公开与不公开对我来说没有任何的障碍! To 4楼
呵呵,我那样说是回2楼的,就是说是一片M48的价格
至于开源,因为一年前看过楼主发过的一个差不多内容的帖子~~现在又看到这个帖子就没动过这念头了 to 4楼:
该应用已经3年多了,用到了好多公司的产品中,最近1年都没有升级,原因是过去已经不知道升级多少次了!?
毕竟现在是公司的东西,给出固件供大家使用,给出使用方法,不也是很好吗?何必强求呢?我已经向单位提出开源,可是一直都
没有同意,因为一个产品中采用多CPU方案不易被轻易仿制,一旦开源怕会有影响。
不过我快要换单位了!那时一定开源!供大家排砖!
加功能好像是不可能了,内部的RAM和Flash资源已经被我榨干了,哈!
经过一个公司几年锤炼的东西,何必刻意的去强调什么……
该芯片内部设计了好多有趣且有用的功能,若大家有什么疑问请提出! 我早想用MEGA8仿7289,上周还完成了I2C的MEGA8通讯,我设想的是8LED显示,没楼主功能这么全.
没想到楼主真快,用了几年了,佩服,参考一下
不过我还是会坚持自己做一个的,至少8LED没问题的.到时贴代码 不错 顶 谢谢【楼主位】 minier的贡献。COOL. 期待源码上传 :) 谢谢楼主,同样期待代码 收下了,谢谢! 如果大家真的感兴趣,那你应该先试用,而不是为了收藏,从而提出新的想法! To 5楼 抱歉看错了,其实能不能开源对我真的没有任何意义,但对于初学者还是有很多的意义的。功能还是可以再增加的,代码还是可以再优化的,没有谁敢说自己的代码没有BUG 百分百的优化率。。。。 这几天正在琢磨用MCU模拟1621一类的片子,被时序搞得乱七八糟,谢谢楼主 强 很酷的文档 收下了,谢谢。 ding!!!
mark 可能M48还便宜些哈! 这帖很不错,喜欢 楼主的性格…… --芯片名称:XX619A
--采用ATmega48V实现的XX619A的功能:
->高达400kHz速率的I2C总线通信接口(器件地址0x62,内部子地址自动加1)
->256字节EEPROM,共4页,每页64字节
->256字节SRAM,共4页,每页64字节
->I/O扩展 PB口和PD口
->10位ADC(PC口);
--GCCAVR20071221下编译通过
--2008-3-8
V1.0
--该专用管理芯片的外部接口特征:
1、芯片供电电压:1.8~5.5V;
2、熔丝位(SUT1~0)设置为01的4.1ms快速上升电源。采用内部8M RC时钟和内部复位电路;
3、芯片工作温度:-40~85摄氏度。
--操作该芯片的通信协议如下:
1、先发器件地址字节,并给出读/写位:0x63/0x62
2、紧接其后是所要操作的Reg/SRAM/EEPROM地址或命令:
(1)地址最高2位,以区别是操作Reg,EEPROM,还是SRAM:
00操作EEPROM(注意,写1次EEPROM时至少要3.4ms)
01操作SRAM
10操作Reg
11保留
(2)低6位是Reg、SRAM或EEPROM地址。
当操作寄存器时,芯片寄存器结构和地址如下:
Reg_DDRB;//0x80
Reg_PORTB;//0x81
Reg_PINB;//0x82
Reg_DDRD;//0x83
Reg_PORTD;//0x84
Reg_PIND;//0x85
Reg_ADMUX;
Reg_ADCSRA;//0x87
Reg_ADCSRB;//0x88
Reg_ADCL;//0x89
Reg_ADCH;//0x8a
以上每个寄存器的用法与ATMega48同名寄存器用法一致。
Reg_E2pBufCount;//0x8b
//E2pROM的写缓存还没有完成写的数据个数
//外部MCU的操作地址:0x8c
Reg_Page;//0x8c
b7 6 5 4 3 2 1 b0
- - SRAMaddr1 SRAMaddr0 - - EEPaddr1 EEPaddr0
1、b1~b0为选择EEPROM的页,共4页,每页64字节
2、b5~b4为选择SRAM的页,共4页,每页64字节
3、第3、4----个字节就是读或写的数据。
--该专用管理芯片的设计方法和思想如下:
XX619A的控制和状态查询全部都是通过读/写寄存器实现的,用户只需象读写24C02内的单
元一样即可实现对XX619A的控制。 熔丝配备和使用方法参见XX7299A!欢迎大家测试!固件下载:
点击此处下载ourdev_229415.rar(文件大小:1K) 好! 好贴,顶,期待开源 很好的思路。 有点意思,期待开源~ 终于等到了,:-) 支持1楼和27楼的意思 楼主是哪里人呀?看头像好像是我原单位的一个同事。 芯片的通信协议修改如下:
1、先发器件地址字节,并给出读/写位:0x63/0x62
2、紧接其后是ADC通道、转换模式和参考电压的配置字节:
(1)地址最高2位,bit7和bit6用来选择ADC通道(只使用4ch ADC):
00:ADC0
01:ADC1
10:ADC2
11:ADC3
(2)bit6和bit5用来选择ADC转化模式:
00:连续转换模式
01:ADC单次转换
10:定时器0溢出自动转换模式
11:定时器1溢出自动转换模式
(3)bit4和bit3保留
(4)最低2位,bit1和bit0用来配置ADC参考电压:
00:AREF, 内部Vref 关闭
01:AVCC, AREF 引脚外加滤波电容
10:保留
11:1.1V 的片内基准电压源, AREF 引脚外加滤波电容
3、芯片复位后默认的模式是:ADC0通道,连续转换,外部基准AREF模式。
4、芯片操作时序如下:
4、1、用户直接进行读操作(不做任何配置),命令字节:0x63;
芯片返回值:ADCH和ADCL(芯片复位后默认的模式是:ADC0通道,连续转换,外部基准AREF模式。)
4、2、用户对ADC转换进行配置,命令字节:0x6203(模式是:ADC0通道,连续转换,
1.1V 的片内基准电压源, AREF 引脚外加滤波电容)。下一次用户直接进行读操作的返回值是:ADC0通道,连续转换,
1.1V 的片内基准电压源, AREF 引脚外加滤波电容。 好像几年前在这里就看过......
无*.c文件,不能置裤.....^_^ 我考虑考虑!! 想再修改一下协议(V0.2):
1、先发器件的默认地址0x62
2、紧接其后是ADC通道、转换模式和参考电压 + 《自定义器件地址》的配置字节:
bit0作为配置判断位。
bit0 = 0,配置自定义器件地址,bit7~bit1为新的器件地址(写入EEROM);
bit0 = 1,对ADC通道、转换模式和参考电压进行配置(如下):
(1)地址最高2位,bit7和bit6用来选择ADC通道(只使用4ch ADC):
00:ADC0
01:ADC1
10:ADC2
11:ADC3
(2)bit6和bit5用来选择ADC转化模式:
00:连续转换模式
01:ADC单次转换
10:定时器0溢出自动转换模式
11:定时器1溢出自动转换模式
(3)bit4保留
(4)bit2和bit1用来配置ADC参考电压:
00:AREF, 内部Vref 关闭
01:AVCC, AREF 引脚外加滤波电容
10:保留
11:1.1V 的片内基准电压源, AREF 引脚外加滤波电容
3、芯片复位后默认的模式是:默认器件地址0x62,ADC0通道,连续转换,外部基准AREF模式。
4、芯片操作时序如下:
4、1、用户直接进行读操作(不做任何配置),命令字节:0x63;
芯片返回值:ADCH和ADCL(芯片复位后默认的模式是:ADC0通道,连续转换,外部基准AREF模式。)
4、2、用户对ADC转换进行配置,命令字节:0x6207(模式是:ADC0通道,连续转换,
1.1V 的片内基准电压源, AREF 引脚外加滤波电容)。下一次用户直接进行读操作的返回值是:ADC0通道,连续转换,
1.1V 的片内基准电压源, AREF 引脚外加滤波电容
4、3、用户重新定义I2C器件地址,命令字节:0x6254。把I2C器件地址改成0x54.
----------------------------------------------------------------------------------
这样一颗I2C接口的ADC就可以所向无敌了o(∩_∩)o... 我想问下,在按键送开后有中断产生吗? XX7299A,按键松开后,按键中断自动撤销 哦看样子和ZLG的那个都一样,上次就把我害惨了. 支持开源 随便问下,RTC的误差能做到什么样?频繁断电上电,SRAM数据会出错吗?EPPROM 地址0会不会出错?
如果开源,可以把节气等这些不实用的功能取消,变成再外挂EEPROM等更实用的功能。不用按键或按键比较少的时候,多余IO可以再外扩其它需要的功能。 to:5QYLYqR0Y7
随便问下,RTC的误差能做到什么样?
答:没有温度补偿
频繁断电上电,SRAM数据会出错吗?
答:不会
EPPROM 地址0会不会出错?
答:不会
节气对您不适用,对其他人就一定不适用了吗!
“再外挂EEPROM”,已经是特殊应用了吧!?!
按键的I/O是和扫描显示共用的,并没有多用1个I/O用于按键! 要是有详细的资料就好了,毕竟DIY的话,只是照着做就没什么乐趣的。 Embedtech 陇东大少
积分:505
派别:
等级:------
来自:深圳-福田
哦看样子和ZLG的那个都一样,上次就把我害惨了. 不一样,手册里已经指出差别了! 这么好的帖子以前居然没有注意到.大概春节前时常出差,"讨"钱去了.
源码最好不要公开.我要把这个当题目给牛人来应聘时能力测试用.面试过了,再给2周时间去完成它.如果做不出,
我们也没有吃亏,2周的钱还是要给滴.做出了嘛,我们就赚了.以后钱是要靠"牛人"去赚的,"牛人"呵呵..浑身是力气哦,想着就高兴. 请问楼主:
看你的帖子,我的理解:XX7299A 是在M48里跑键盘扫描和动态显示程序的,不是专用芯片。我的理解有没有错?
如果XX7299A是专用芯片,是哪个公司出品的,能告诉我吗?我以前没听说过。 回楼上,你的理解是正确的,楼主已经说的相当清楚了,是用M48做的通用芯片。
7299A的代号也就是这个了,没有其它公司出这个。 谢谢解答!
若要用RTC功能,是不是得用电池供电?
断电(比如换电池)怎么让时钟继续运行? to 【47楼】 daydream
你还没有看手册吧!?! 收藏研究 收藏,留个记号 记号 期待源码.... 1)支持楼主的设计,
2)源码不方便公开大家不要勉强。
有一点疑问:以M48或M8的驱动能力,驱动8位段码LED的话,亮度很差了,楼主这个设计,驱动能力不会大的,2英寸的LED估计即是亮了,亮度不会很好。我现在驱动7位0.8英寸的LED,电流要100多毫安了,亮度只能说够用,呵呵。我是用其它芯片驱动的。 普通每段为单LED(或多个一串)的工作电流为20mA左右为最佳。
如8段同时亮时为20mA*8=160mA,这个电流AVR是达不到的。
如使用的数码管不是高亮或超亮的就更暗。
应根据实际情况来确定是否要驱动。 以前有人猜7290是PIC仿的,看来是有可能的 7290使用的是飞利浦的51单片机 亮度不是十分耀眼,但是,一般应用(非强光下)效果很好! 哦。谢谢解答
ZLG这招挺绝啊,灌个程序进去就可以加价卖出了 楼主 是我 呵呵
又有新的东西了啊。
我不会让这个帖子沉下去的,
我顶,我顶,我顶顶顶!!! 上传XX7299A原理图和PCB
点击此处下载 ourdev_241602.rar(文件大小:77K) (原文件名:郭强 显示面板.rar) 刘老师,请把《AVR单片机原理及测控工程应用》2.2.5节《ATmega48通过I2C从机模式模拟AT24C02》的代码发给我一份吧
email:encijia@sohu.com 搂主 好啊!!!
是我 呵呵 这是好东西一定帮你顶下去 我用过TM1623 价格不错1元多。只有按键和LED扫描,有可能是用台系的芯片做的。
单单的用显示和按键 ATMEGA做感到有点奢侈。
不过把时钟和AD加进去,楼主确实很高明。
再加ID码,SPI接口也很好用的。 呵呵,加油。明君留 兄弟们都来捧场了!!!! 有个PROTUES的演示就更好了。 原型工程来了!!!!!!!!!!!!!!!!!!!!有心人可以参考,也转到这儿来吧
谢谢刘老师:-)
/*---------------------------------readme first---------------------------------
--CPU:ATmega48
--GCCAVR20070525下编译通过
--刘海成 2007-8
--ATmega48模拟24系列EEPROM
------------------------------------------------------------------------------*/
#include <avr/io.h>
#include <avr/interrupt.h>
volatile unsigned char IIC_STATE; //IIC通信状态机
#defineSTATE_IIC_ADDR 0xc3
#defineSTATE_IIC_WDATA 0xa5
#defineSTATE_IIC_RDATA 0x5a
#defineSTATE_IIC_STOP 0
volatile unsigned char IIC_ADDR,IIC_DATA; //当前数据
//------------------------------------------------------------------------------
//------------------------------TWI状态定义-------------------------------------
#define SLA_Device_Addr 0xa0 //定义器件地址
//SR 从机方式接收ST 从机方式传输ALL广播
#define SR_SLA_ACK 0x60
#define SR_ALL_ACK 0x70
#define SR_DATA_ACK 0X80
#define SR_DATA_NOACK 0X88
#define SR_ALL_DATA_ACK 0x90
#define SR_ALL_DATA_NOACK0x98
#define SR_STOP_RESTART 0xa0
#define ST_SLA_ACK 0xa8
#define ST_DATA_ACK 0xb8
#define ST_DATA_NOACK 0xc0
#define ST_LAST_DATA_ACK 0xc8
//常用TWI操作(从模式写和从模式读)
#define Twi_STATE() (TWSR&0xf8)
#define SLA_autoACK() (TWCR=(1<<TWEA)|(1<<TWINT)|(1<<TWEN)|(1<<TWIE))
#define SLA_Send8Bit(x) {TWDR=(x);TWCR=(1<<TWEA)|(1<<TWINT)|(1<<TWEN)|(1<<TWIE);}
#define SLA_Resume() (TWCR=(1<<TWEA)|(1<<TWSTO)|(1<<TWINT)|(1<<TWEN)|(1<<TWIE))
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void Chip_Init(void)
{ //IIC初始化
TWAR=SLA_Device_Addr;//set slave address,不使用广播地址
TWCR=0x45; //使能IIC,并开中断
asm("sei"); //开总中断
}
//------------------------------------------------------------------------------
unsigned char eeprom_read_byte(unsigned char uiAddress)
{while(EECR&(1<<EEPE))//等待上一次写操作结束
#define EEARH _SFR_IO8 (0x22)
EEARH=0x00;
EEARL=uiAddress; //设置地址寄存器
EECR|=(1<<EERE); //设置EERE以启动读操作
return EEDR;
}
//------------------------------------------------------------------------------
int main(void)
{
Chip_Init();
while(1)
{ ;
}
}
//------------------------------------------------------------------------------
ISR(TWI_vect)
{unsigned char nc;
nc=Twi_STATE();
if(nc==SR_SLA_ACK) //从地址匹配,写传输,ACK已返回
{ IIC_STATE=STATE_IIC_ADDR; //下一步接收数据的地址
SLA_autoACK();
}
else if(nc==SR_DATA_ACK)//接收主机送来的从机数据地址或数据,ACK已返回
{ if(IIC_STATE==STATE_IIC_ADDR) //如果是地址
{IIC_ADDR=TWDR;
IIC_STATE=STATE_IIC_WDATA;//下一步接收数据
}
else //IIC_nextSTATE==STATE_IIC_WDATA:
{ IIC_DATA=TWDR;
while(EECR&(1<<EEPE));//等待上一次写操作结束
EEARH=0x00;
EEARL=IIC_ADDR++; //地址自动+1
EEDR=IIC_DATA;
EECR|=(1<<EEMPE);
EECR|=(1<<EEPE); //置位EEPE以启动写操作E
}
SLA_autoACK();
}
else if((nc==ST_SLA_ACK)||(nc==ST_DATA_ACK))//从地址匹配,读传输,或者是
{ //TWDR里数据已经发送,接收到ACK
IIC_STATE=STATE_IIC_RDATA;
IIC_DATA=eeprom_read_byte(IIC_ADDR++); //地址自动+1
SLA_Send8Bit(IIC_DATA); //发送数据
}
else if(nc==ST_DATA_NOACK) //TWDR里数据已经发送,接收到NOTACK
{
IIC_STATE=STATE_IIC_STOP;
SLA_autoACK();
}
else if(nc==SR_STOP_RESTART) //主机写命令结束或读命令重新开始
{
SLA_autoACK();
}
else
{
SLA_Resume();//从机模式到未被寻址状态,恢复TWI响应能力
}
}
//------------------------------------------------------------------------------ 记号 to【67楼】 ninjia
原型程序是基于状态机编程的! 好像一片mega8 也基本能做到这些更能阿 主要看这个芯片的价钱吸引不 呵呵 to【70楼】 ljxh401 镇关西
ATmega48v更便宜些! 思路想法不错,回头我也学习楼主动手做一下! 这款芯片很好用的,支持刘老师!!! 这次设计要使用这芯片。 问了中发几家柜台都说没有这个芯片,XX7299A是什么公司生产的我怎么也查不到呢? 回:【75楼】 cskl
XX7299A是楼主用Mega48自主研发出来的芯片,XX7299A只不过是楼主给命的一个名字罢了。
不过功能有保证,设计后的XX7299A芯片非常好用。
用过才知道! 哦。 刚学AVR,本打算拿M8做个这样的键盘显示驱动芯片来着,都已经规划好了。
原来有人做了,哈哈!
楼主什么时候公布源程序啊?期待………… 做个记号 顶
mark 记号 记下了 多谢 顶下老是来晚。。。。 记号一下。。。。。。 顶一下 很早看过,资料也下了,今天还是让我一顿好找。
MARK一下。
建议刘老师将之前早期有BUG的源码开源,这即方便了技术研讨者,又防止了用心者。
------------------
是“别有用心者”。 呵呵 本来楼上的原型工程就是刘老师自己写的呵呵 在他自己的书里已经写了思路 呵呵 感觉要是LZ要是不在现在的公司做事 可能代码就可以在他的书中出现了,但好多思路可以在《AVR单片机原理及测控工程应用——基于ATmega48/ATmega16 》里找找 也许会有,但我看了一个ARM的培训视频 好象也是LZ录的呵呵 楼主的很多思路在《AVR单片机原理及测控工程应用——基于ATmega48/ATmega16 》这本书里都可以找到的!
有时间好好研究研究 太有创意了 没有源码,拿来也没有人敢用呀 mark ./bbs_upload/files_15/ourdev_446610.gif</a> 收藏 mark mark1 累计已经有25位网友成功应用到产品中,庆祝一下 mark mark mark
页:
[1]
2