⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 基于MDK的LPC1100处理器开发应用例程
💻 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 + -