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

📄 main.c

📁 atmelsam7s64twi完美底层驱动
💻 C
字号:
#include "mydefine.h"
#include <AT91SAM7S64.H>

volatile char message[80];
volatile int loop;

extern void AT91F_TWI_Open(void);
extern int AT91F_TWI_WriteByte (const AT91PS_TWI,int, int, char *, int);
extern int AT91F_TWI_ReadByte  (const AT91PS_TWI,int, int, char *, int );

extern void uartinit(void);
extern unsigned char putcharme(unsigned char i);
extern void USART0_send_string(unsigned char *bpSendData,unsigned int length);
//*--------------------------------------------------------------------------------------
//* 函数名  : wait_ms
//* 功能    :软件循环延时 MS微妙
// 参数:   MS:延时时间(多少微妙)
//* Creation            : 张正锋 2006-1-15 zhangzf@baite-group.com
//*--------------------------------------------------------------------------------------
void wait_ms (unsigned int ms )
{
    for (loop=0; loop<1000*ms; loop++){};

}
//*----------------------------------------------------------------------------
//* 函数名: AT91F_TestEEPROM
//* 功能:测试TWI读写EEPROM功能
//* Creation            : 张正锋 2006-1-15 zhangzf@baite-group.com
//*----------------------------------------------------------------------------
void AT91F_TestEEPROM(void)
{
	//写一个数据测试
	char status,write,read,bI;
	unsigned char bpData[3];

	for(bI=0;bI<245;bI++)
	{
		write=0x55;
		 bpData[0] = bI/100+'0';
		 bpData[1] = (bI%100)/10+'0';
		 bpData[2] = bI%10+'0';	
		// 向EEPROM的01位置开始连续写10个字节
		status =AT91F_TWI_WriteByte(AT91C_BASE_TWI, AT91C_EEPROM_I2C_ADDRESS | AT91C_TWI_IADRSZ_2_BYTE, bI, &write, 1);
	
		//如果返回的status不为0,则表明写出错
		if (status)
		{
			//打应错误信息
			USART0_send_string(bpData,3);
			USART0_send_string("ERROR",5);
		}
		//等待100MS
		wait_ms(100);
	
		//从EEPROM的01位置开始连续读10个字节
		status =AT91F_TWI_ReadByte(AT91C_BASE_TWI, AT91C_EEPROM_I2C_ADDRESS | AT91C_TWI_IADRSZ_2_BYTE, bI, &read, 1);
	
		//如果返回的status不为0,则表明写出错
		if (status)
		{
			//打应错误信息
			USART0_send_string(bpData,3);
			USART0_send_string("10 IS ERROR",11);
		}
		if (read == write)
		{
			//打印测试信息
			USART0_send_string(bpData,3);
			USART0_send_string("OKOKOK",6);
			continue ;
		}
		else
		{
			//打印测试信息
			USART0_send_string(bpData,3);
			USART0_send_string("HAVE ERROR",10);
			continue;
		}
	}
}
int main()
{

	uartinit();
	USART0_send_string("begin to test twi",17);
	USART0_send_string("open twi",8);
	while(1)
	{
		//TWI 测试
		AT91F_TWI_Open();
		AT91F_TestEEPROM();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -