📄 main.c
字号:
/**** (C) COPYRIGHT 2010 UP Team, Wuhan University of Technology ************
* 文件名: main.c
* 作者 : UP Team, Wuhan University of Technology
* 日期 : 01/18/2010
* 描述 : 主程序源文件.
*******************************************************************************
*******************************************************************************
* 历史:
* 01/18/2010 : V1.0 初始版本
*******************************************************************************/
/* Includes ------------------------------------------------------------------*/
#include <stdio.h>
#include "LPC11xx.h"
#include "type.h"
#include "uart.h"
#include "i2c.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
extern volatile uint32_t I2CCount;
extern volatile uint8_t I2CMasterBuffer[I2C_BUFSIZE];
extern volatile uint8_t I2CSlaveBuffer[I2C_BUFSIZE];
extern volatile uint32_t I2CMasterState;
extern volatile uint32_t I2CReadLength, I2CWriteLength;
uint8_t ErrorCount = 0;
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/
/**
* @函数名:main
* @描述:主函数
* @参数: 无
* @返回值:无
*/
int main (void)
{
uint32_t i;
SystemInit();
/* NVIC配置包含在UARTInit函数中 */
UARTInit(115200);
printf("\n\r-- Basic I2C EEPROM Project V1.0 --\n\r");
printf("\n\r-- EM-LPC1100 --\n\r");
printf("\n\r-- I2C Read/Write EEPROM test -- \n\r");
/* 初始化I2C */
if ( I2CInit( (uint32_t)I2CMASTER ) == FALSE )
{
/* 初始化失败 */
while ( 1 );
}
/* 进入并启动I2CEngine之前,配置好所有的参数包括写数据长度,读数据长度
I2C命令,初始化I2CMasterBuffer
(1)如果只写,I2CWriteLength为写入数据字节数,I2CReadLength读长度为0,
所写数据填入I2CMasterBuffer。
(2)如果只读,I2CReadLength为读数据字节数,I2CWriteLength为0。读出
的数据填充至I2CSlaveBuffer。
(3)如果既有读又有写,I2CWriteLength指定写入数据长度,I2CReadLength
指定读取数据长度。
*/
I2CWriteLength = 6;
I2CReadLength = 0;
I2CMasterBuffer[0] = PCF8594_ADDR;
/* EEPROM内部存储单元地址 */
I2CMasterBuffer[1] = 0x00;
I2CMasterBuffer[2] = 0x00;
/* 发送的第一个数据 */
I2CMasterBuffer[3] = 0xAA;
/* 第二个数据 */
I2CMasterBuffer[4] = 0x12;
/* 第三个数据 */
I2CMasterBuffer[5] = 0x34;
I2CEngine();
/* 写延迟 */
for ( i = 0; i < 0x20000; i++ );
for ( i = 0; i < I2C_BUFSIZE; i++ )
{
I2CSlaveBuffer[i] = 0x00;
}
/* 先发送三个字节,包括从设备EEPROM地址,内部存储器地址,然后读取三个字节 */
I2CWriteLength = 3;
I2CReadLength = 3;
I2CMasterBuffer[0] = PCF8594_ADDR;
I2CMasterBuffer[1] = 0x00;
I2CMasterBuffer[2] = 0x00;
I2CMasterBuffer[3] = PCF8594_ADDR | RD_BIT;
I2CEngine();
/* 比较写入和读出的数据是否相等 */
for (i = 0; i < 3; i++ )
{
if (I2CSlaveBuffer[i] != I2CMasterBuffer[i + 3])
{
ErrorCount++;
}
}
/* 测试失败 */
if (ErrorCount == 3)
{
printf("\n\r I2C EEPROM test failed! \n\r");
}
else /* 测试成功 */
{
printf("\n\r I2C EEPROM test success!\n\r");
}
return 0;
}
/*** (C) COPYRIGHT 2010 UP Team, Wuhan University of Technology**文件结束*******/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -