📄 iic0.h
字号:
/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Copyright (c) $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$ 肖遥电子(广州)研发中心
$ Shawyoo Electronics (GuangZhou) R&D Center
$ http://www.shawyoo.com Email: autoele@qq.com
$ QQ群:9069471/9069433/9524253 All rights reserved.
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Copyright (c) $$$$$$$$$$$$$$$$$$$$$$$$$$$ */
/*
文件描述
文件名: IIC0.h
功能描述: IIC0底层驱动程序头文件
编译环境: Keil for ARM + ARTX
目标CPU: LPC2000
作者: 肖建辉
创建时间:
建议编辑环境:UltraEdit 11.00a+ 制表符宽度为三个字符,程序可读性更好。
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
*/
#ifndef __IIC0_H__
#define __IIC0_H__
#include "RTOS.h" /* ARTX kernel functions & defines */
#include "TWI.h"
#ifdef IIC0_GLOBALS
#define IIC0_EXT
#else
#define IIC0_EXT extern
#endif
// $$$$$$$$$$$$$$$$$$ <<< Use Configuration Wizard in Context Menu >>> $$$$$$$$$$$$$$$$$
// <h>IIC0相关设置
/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
// <o>I2C_FREQUENCY: IIC0波特率设置 <100000-400000>
// <i> Default: 172800
*/
#define I2C_FREQUENCY 172800
#if (I2C_FREQUENCY >= 400000)
#error "Out of IIC MAX Frequency"
#endif
// </h>
// $$$$$$$$$$$$$$$$$$$ <<< end of configuration section >>> $$$$$$$$$$$$$$$$$$$$$$$$$$$$
/* I2C Interface 0 */
#define I20CONSET (*((volatile unsigned char *) 0xE001C000))
#define I20STAT (*((volatile unsigned char *) 0xE001C004))
#define I20DAT (*((volatile unsigned char *) 0xE001C008))
#define I20ADR (*((volatile unsigned char *) 0xE001C00C))
#define I20SCLH (*((volatile unsigned short*) 0xE001C010))
#define I20SCLL (*((volatile unsigned short*) 0xE001C014))
#define I20CONCLR (*((volatile unsigned char *) 0xE001C018))
/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
IIC从机器件地址
*/
#define IIC_SLAVER_ADDRESS 0x08
#define IIC_EE_DEVICE_ADDR1 0xa2
/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
各种命令字枚举
*/
IIC0_EXT enum
{
IIC_GET_SPEED_COMMAND = 1,
IIC_GET_GPS_COMMAND,
IIC_GET_T485_COMMAND,
IIC_EEPROM_UART0,
IIC_EEPROM_GSM_GPRS,
IIC_READ_COMM, // IIC读命令(没有重复开始信号)
IIC_WRITE_COMM, // IIC写(没有重复开始信号)
IIC_RW_COMM, // IIC写读(需重复开始信号)
IIC_INIT_CHECK_COMM = 'I',
IIC_BEEP_LED_COMM = 'B',
IIC_SET_LED_BUZZER_COMMAND = 0x81,
} IIC_COMMAND_ENUM;
/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
IIC通讯相关变量定义
*/
IIC0_EXT struct
{
uchar ReadWrite;
uchar SlaverAddress;
uchar Command;
uchar Busy;
uchar RW_Type;
uchar Status;
uint16 RLen;
uint16 WLen;
uchar *pReadBuffer;
uchar *pWriteBuffer;
} IIC;
/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
函数名称:IIC_Read
功能描述:按指定的从机地址的当前存储地址和长度读取数据
入口参数:从机地址,任务命令,读取的长度,接收缓冲
出口参数:无
全局变量: 无
创建时间:
修改时间:
注1:命令字作用 IIC通讯完毕时,该马上返回哪个任务
注2:此函数对于操作非EEPROM时,很有用。比如与其它CPU的IIC通讯时,连续读100字节
*/
uchar IIC_Read(uchar SlaveAddr,uchar Comm,uint16 Length,uchar *pBuffer);
/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
函数名称:IIC_Write
功能描述:写数据到从机
入口参数:从机地址,任务命令,长度,写入的数据区指针
出口参数:
全局变量:
创建时间:
修改时间:
注1:命令字作用 IIC通讯完毕时,该马上返回哪个任务
注2:此函数对于操作非EEPROM时,很有用。比如与其它CPU的IIC通讯时,连续写100字节
写缓冲的前几个字节可用于从机认识的命令字或地址
*/
uchar IIC_Write(uchar SlaveAddr,uchar Comm,uint16 Length,uchar *pBuffer);
/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
函数名称:IIC_WriteRead
功能描述:按指定的从机地址的随机存储地址读取数据
入口参数:器件地址,任务命令,写长度和写数据缓冲指针,读长度和数据缓冲指针
出口参数:无
全局变量:
创建时间:
修改时间:
注1:命令字作用 IIC通讯完毕时,该马上返回哪个任务
注2:此函数对于操作非EEPROM时,很有用。比如与其它CPU的IIC通讯时,
连续写100字节后马上再连读100字节。写缓冲的前几个字节可用于从机认识的命令字或地址
*/
uchar IIC_WriteRead(uchar Addr,uchar Comm,uint16 WLen,uchar *pW,uint16 RLen,uchar *pR);
/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
函数名称:ReadEEPROM
功能描述:读EEPROM
入口参数:器件地址,存储器地址,读长度,读取存储指针
出口参数:无
全局变量: 无
创建时间:
修改时间:
注:本函数只支持存储容量大于256字节的EEPROM,要支持小容量的,请自行修改
*/
void ReadEEPROM(uchar DAddr,uint16 RAddr,uint16 RLen,uchar *pData);
/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
函数名称:EEPROM_Write
功能描述:写EEPROM
入口参数:器件地址,页长度,写存储地址,写长度,待写数据指针
出口参数:输入成功与否(只判断输入EEPROM,不判断是否写成功),返回0表示成功
全局变量: 无
创建时间:
修改时间:
注:本函数只支持存储容量大于256字节的EEPROM,要支持小容量的,请自行修改
*/
uchar WriteEEPROM(uchar DAddr,uchar PageLen,uint16 WAddr,uint16 WLen,uchar *pData);
/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
函数名称:I2cInit
功能描述:I2c0初始化函数
入口参数:无
出口参数:无
全局变量:
创建时间:
修改时间:
*/
void I2C0_Init(void);
#endif
/*
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ End of File $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -