www.fosvos.com GM8141 & GM8142 应用驱动 C 函数包 上海福跃电子科技有限公司提供芯片销售及技术方案技术支持 来自:www.fosvos.com 文件说明 1. 该函数包仅用于 GM814x 的操作,包含了对该芯片的配置寄存器读写、数据收发、软件 shutdown、 软件 wakeup 操作,以及对接收数据的分析处理。 2. 该函数包中部分变量名和宏定义需与外部主程序一致,具体请参见源文件。 3. 该函数包中调用的三个函数 ClrCS(),SetCS(),SPITransmit(unsigned char c)需要 用户根据所用的单片机系统编写相应源代码,并注意函数名的统一。 4. 该函数包中串口号变量 N 由 0~3 分别表示串口 1,串口 2,串口 3 和串口 4。 5. 该函数包的源代码可由用户根据自己的情况做修改。 6. 若用户需考虑本函数包占用的 RAM 资源问题,可根据需要选择需要的函数, 或自己根据 GM814x 的数据手册自行编写对 GM814x 的所有操作程序。 /*FOSVOS ELECTRONIC SHANGHAI www.fosvos.com TEL: 021-58998693/58994470 */ /*********************************************************** Name: FOSVOS_GM814x.h Descibe: Head file of 814XAppProgram.c Version: 1.0 Contents: Include all operation and function of GM814x Copyright: GTFV 2006 ***********************************************************/ extern unsigned char extern unsigned char extern unsigned char extern unsigned char extern unsigned char extern unsigned char extern unsigned char extern unsigned char Flag1_T; Flag2_T; Flag3_T; Flag4_T; Revbuff1; Revbuff2; Revbuff3; Revbuff4; /*********************************************************** Function: Delay Describe: Time delay Input: int formated time Output: void ***********************************************************/ void Delay(unsigned int nTime); www.fosvos.com /*********************************************************** Function: SendTo814X Describe: send 2 byte to 814x and receive 2 byte from 814x Input: 2 byte to be send Output: 2 byte read from 814x ***********************************************************/ unsigned int SendTo814X(unsigned char chigh,unsigned char clow) ; /*********************************************************** Function: Gm814XShutdown Describe: Shutdown the chip Input: void Output: void ***********************************************************/ void Gm814XShutdown(void); /*********************************************************** Function: Gm814XWakeup Describe: Wakeup the chip Input: void Output: void ***********************************************************/ void Gm814XWakeup(void) ; /*********************************************************** Function: Write814xConfig Describe: Set the configure register of 814x Input: COM number and configure data Output: 2 byte read from 814x ***********************************************************/ unsigned int Write814xConfig(unsigned char n,unsigned char high,unsigned char low) ; /*********************************************************** Function: Read814xConfig Describe: read out the configure register data Input: COM number Output: configure register data ***********************************************************/ www.fosvos.com unsigned int Read814xConfig(unsigned char n) ; /*********************************************************** Function: ReadTFIFOState Describe: read all transmit FIFO status Input: void Output: TFIFO state data ***********************************************************/ unsigned int ReadTFIFOState(void) ; /*********************************************************** Function: SendDataToCom Describe: send data to UART Com and read out the data of receive FIFO Input: COM number and data to be send Output: RFIFO data ***********************************************************/ unsigned int SendDataToCom(unsigned char n,unsigned char c,bit Pt); /*********************************************************** Function: SendToAllCom Describe: send data to all UART Com and read out the data of receive FIFO Input: data to be send Output: RFIFO data ***********************************************************/ unsigned int SendToAllCom(unsigned char c,bit Pt) ; /*********************************************************** Function: ReadRFIFOData Describe: read out the data of receive FIFO Input: void Output: RFIFO data ***********************************************************/ unsigned int ReadRFIFOData(void); /*********************************************************** Function: Managerevdata Describe: Analyse the data received from 814X Input: void Output: void www.fosvos.com ***********************************************************/ void ManageRevData(unsigned int rdata); /*END FOSVOS_GM814X.h*/ /*FOSVOS ELECTRONIC SHANGHAI www.fosvos.com TEL: 021-58998693/58994470 */ /*********************************************************** Name: FOSVOS_814XAppProgram.c Descibe: Function package of GM814x's operation Version: 1.0 Time: 2006.1 Contents: Include all operation and function of GM814x Copyright: GTFV 2006 ***********************************************************/ unsigned char Flag1_T; //814x 串口 1 发送 FIFO 空标志 unsigned char Flag2_T; //814x 串口 2 发送 FIFO 空标志 unsigned char Flag3_T; //814x 串口 3 发送 FIFO 空标志 unsigned char Flag4_T; //814x 串口 4 发送 FIFO 空标志 unsigned char Revbuff1; //串口 1 数据缓存 unsigned char Revbuff2; //串口 2 数据缓存 unsigned char Revbuff3; //串口 3 数据缓存 unsigned char Revbuff4; //串口 4 数据缓存 void ClrCS(void); //置 814X 片选有效 void SetCS(void); //置 814X 片选无效 unsigned char SPITransmit(unsigned char c); //MCU 的 SPI 接口发送 1 Byte 数据并接收 1 Byte 数据 /*********************************************************** Function: Delay Describe: Time delay Input: int formated time Output: void ***********************************************************/ void Delay(unsigned int nTime) { while(--nTime) {;} } /*********************************************************** Function: SendTo814X www.fosvos.com Describe: send 2 byte to 814x and receive 2 byte from 814x Input: 2 byte to be send Output: 2 byte read from 814x ***********************************************************/ unsigned int SendTo814X(unsigned char chigh,unsigned char clow) { unsigned int cTempHigh,cTempLow; unsigned int RevData; ClrCS(); //置 814x 片选有效 Delay(5); //延时时间参考 814x 数据手册的要求 cTempHigh=SPITransmit(chigh); //向 814X 发送高位数据 cTempLow=SPITransmit(clow); //向 814X 发送低位数据 Delay(5); //延时时间参考 814x 数据手册的要求 SetCS(); //置 814x 片选无效 RevData=cTempHigh<<8|cTempLow; return RevData; //返回从 814x 读出的数据 } /*********************************************************** Function: Gm814XShutdown Describe: Shutdown the chip Input: void Output: void ***********************************************************/ void Gm814XShutdown(void) { SendTo814X(0xe0,0x00); } /*********************************************************** Function: Gm814XWakeup Describe: Wakeup the chip Input: void Output: void ***********************************************************/ void Gm814XWakeup(void) { SendTo814X(0xc0,0x00); } /*********************************************************** Function: Write814xConfig Describe: Set the configure register of 814x www.fosvos.com Input: COM number and configure data Output: 2 byte read from 814x ***********************************************************/ unsigned int Write814xConfig(unsigned char n,unsigned char high,unsigned char low) //n 表 示设置的串口号,high 表示给配置寄存器的高位字节(低三位有效),low 表示给配置寄存器的 低位字节 { unsigned char ch; unsigned int RevData; high=high&0x07; ch= 0xc0 | (n<< 3); high=high|ch; RevData=SendTo814X(high,low); Delay(5); return RevData; //向指定的串口功能设置寄存器写配置 } /*********************************************************** Function: Read814xConfig Describe: read out the configure register data Input: COM number Output: configure register data ***********************************************************/ unsigned int Read814xConfig(unsigned char n) //n 表示串口号 { unsigned char ch; unsigned int RevData; ch = 0x40 | (n<< 3); RevData=SendTo814X(ch,0x00); return RevData; //读出指定串口的功能设置寄存器内容 } /*********************************************************** Function: ReadTFIFOState Describe: read all transmit FIFO status Input: void Output: TFIFO state data ***********************************************************/ unsigned int ReadTFIFOState(void) { unsigned int RevData; www.fosvos.com RevData=SendTo814X(0x60,0x00); return RevData; //同时读出所有发送 FIFO 状态 } /*********************************************************** Function: SendDataToCom Describe: send data to UART Com and read out the data of receive FIFO Input: COM number and data to be send Output: RFIFO data ***********************************************************/ unsigned int SendDataToCom(unsigned char n,unsigned char c,bit Pt) //n 表示串口号,c 为需 要发送的数据,Pt 为第九位数据 { unsigned char ch; unsigned int RevData; if(Pt) ch=0x81; else ch=0x80; ch=ch| (n<< 3); RevData=SendTo814X(ch,c); return RevData; //向指定串口发送数据并读出接收 FIFO 数据 } /*********************************************************** Function: SendToAllCom Describe: send data to all UART Com and read out the data of receive FIFO Input: data to be send Output: RFIFO data ***********************************************************/ unsigned int SendToAllCom(unsigned char c,bit Pt) //c 为需要发送的数据,Pt 为第九位数据 { unsigned char ch; unsigned int RevData; if(Pt) ch=0xa1; else ch=0xa0; RevData=SendTo814X(ch,c); return RevData; //向所有串口发送数据并读出接收 FIFO 数据 } /*********************************************************** www.fosvos.com Function: ReadRFIFOData Describe: read out the data of receive FIFO Input: void Output: RFIFO data ***********************************************************/ unsigned int ReadRFIFOData(void) { unsigned int RevData; RevData=SendTo814X(0x00,0x00); return RevData; // 读出接收 FIFO 数据 } /*********************************************************** Function: Managerevdata Describe: Analyse the data received from 814X Input: void Output: void ***********************************************************/ void ManageRevData(unsigned int rdata) { unsigned int cTemp; unsigned char Flag_R; unsigned char Flag_T; cTemp =rdata; if(cTemp&0x8000) {Flag_R=1;} cTemp =rdata; if(cTemp&0x4000) {Flag_T = 1;} //判断 R 标志 //判断 T 标志 if(Flag_R) { cTemp =rdata>>12; switch(cTemp&0x03) //判断接收数据来自哪一个子串口 { case 0: Revbuff1=rdata&0xff; break; case 1: Revbuff2=rdata&0xff; break; case 2: www.fosvos.com Revbuff3=rdata&0xff; break; case 3: Revbuff4=rdata&0xff; break; default: break; } Flag_R=0; } if(Flag_T) { cTemp =rdata>>10; switch(cTemp&0x03) //判断哪一个子串口发送 FIFO 为空 { case 0: Flag1_T=1; break; case 1: Flag2_T=1; break; case 2: Flag3_T=1; break; case 3: Flag4_T=1; break; default: break; } Flag_T=0; } } www.fosvos.com 上海福跃电子科技有限公司是一家提供专业嵌入式技术解决方案 的高科技企业,福跃电子拥有一支由专业、高效、进取的精英组成的团 队。并拥有丰富的资源,包括产品技术方案解决工程师、现场销售工程 师、现场应用工程师,技术销售专家和客户代表,以我们专业服务的技 术水准和强大的技术实力,勤奋敬业、向善向上的奋斗精神,诚实有信 的商业原则,来赢得用户及社会的支持及信任! 福跃电子致力于为国内外广大客户提供嵌入式技术解决方案以及 电子元器件的供应。目前主要设计开发电子衡器、金融 POS 机系统解决 方案、视频编解码处理解决方案及镍氢电池快速充电器芯片解决方案; 产品应用领域已广泛覆盖民用计量、消防楼宇、消费电子、无线通讯、 仪器仪表、节能电子、小家电和汽车电子等行业。公司已与多家大中型 电子企业及国际性 OEM、EMS 公司建立战略性的技术及商务合作伙伴 关系,提供“一站式采购”解决方案,成为中国广大电子企业客户最满意 的合作伙伴之一。 福跃电子本着"为客户提供完整的供应保证系统及深具行业水准的 市场化产品以体现、创造、赢得价值”。从完整的售前售中售后的技术 支持到整个供应链环节的整体保障,从个体化零散式的技术服务到完整 配套技术设计方案到系列设计指导丛书,每一个环节,我们都体现以客户 需求为本的、切实为客户解决实际问题的服务精神,引导客户走向更可 www.fosvos.com 靠更稳定的产品质量之路,帮助客户成功以此来促成公司的发展; 以深 具行业引导性的超值先进产品并使其能被普遍运用以推动这个行业的 快速进步,从这二方面来体现创造赢得我们的价值。 福跃电子经营理念:诚信踏实、创新特色、卓越服务、共同发展放 眼未来,我们将以更高的起点、更灵活的合作方式,用优良真诚的服务 和守信开放的态度,诚邀天下贤士,广交四海商贾,开创美好未来! 联系我们: 上海福跃电子科技有限公司 FOSVOS ELECTRONIC SHANGHAI CO.,LTD 地址:上海市浦东新区金高路 1296 弄 103 号 1~3F 201206 ADDRESS:1-3F,No.103,Alley 1296,Jingao Rd Pudong Shanghai China 电话: +86-21-58998693 58994470 传真: +86-21-58994470-18 E-mail: Tech@fosvos.com URL: www.fosvos.com 开户名:上海福跃电子科技有限公司 开户行:021431-工行浦兴路支行 帐 号:1001 1431 0900 6948 372 税 号:310 1156 7459 7341 www.fosvos.com 福跃电子 IC 设计 ASIC 设计服务综述 福跃电子的 ASIC 范围涉及通讯、电源、消费电子、数字音频/视频等方面,公司可为客户提供全面解 决方案,也可根据用户需求,与用户共同商定技术要求,为用户设计、研制、测试,并按期向用户提供样品, 并向客户长期供应芯片。 我们的技术优势: ・熟悉整机开发的设计工程师开发的产品能够达到方便整机设计工程师开发的目的 ; ・版图设计具有 0.25μm、0.35μm、0.5μm、0.8μm、1.0μm、1.2μm、3μm 的工艺 ・具有大规模数字、模拟芯片方面的设计能力; ・掌握了数字芯片、模拟芯片以及模拟、数字混合芯片等方面的技术 ; ・拥有丰富且成熟的 IP 库; ・芯片规模: 数字:百万门以上 模拟:0.5 微米--3 微米的数模混合 ・拥有先进的逻辑设计、综合、仿真、设计验证等 EDA 软件和先进的硬件设计工具。 业务流程: