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

📄 c_entry.c

📁 hyesco AT91RM9200 IIC source code
💻 C
字号:
/********************************************************************
*File Name:C_Entry.c
*Description:Main Routine
*Date:2004/3/1
*Author:weian mail:an.wei@mail.ia.ac.cn

*********************************************************************/

#include "AT91RM9200.H"
#include "IIC.h"





extern void TWI_Test(void)
{
	int loop;
	
	unsigned int write, read;
	
	AT91F_DBGU_Printk("\n\n\r======================================");
	AT91F_DBGU_Printk("\n\rAT91RM9200 TWI EEPREOM Test\n\r");
	AT91F_DBGU_Printk("======================================\n\r");
   //initiate TWI
    *AT91C_PIOA_ASR = 0x06000000;//Assigns the I/O line to the Peripheral A function(TWD,TWCK)
    *AT91C_PIOA_PDR = 0x06000000;//enables peripheral control of the pin
    *AT91C_PIOA_MDER = 0x06000000;//Enables Multi Drive on the I/O line.(Define TWD and TWCK as open-drain)
    *AT91C_PMC_PCER = 0x00001000;
    *AT91C_TWI_IDR = 0xffffffff;//Disable interrupts
    *AT91C_TWI_CR = 0x24;//the master data transfer is enabled
   //* Here, CKDIV = 1 and CHDIV=CLDIV  ==> CLDIV = CHDIV = 1/4*((Fmclk/FTWI) -6)
    *AT91C_TWI_CWGR = 0x00019595;//2d2d;// Set TWI Clock Waveform Generator Register
	AT91F_DBGU_Printk("TWI ready\n\r");
    write = 0x12356890;
    // Write a byte and read it 
	AT91F_TWI_Write(AT91C_BASE_TWI, 0x4, (char *)&write, 4);
	// Wait 10 ms before data is written into EEPROM
	AT91F_DBGU_Printk("Wait at least 10 ms before value is written into EEPROM\n\r");
	for (loop=0; loop<1000000; loop++);
	{AT91F_TWI_Read(AT91C_BASE_TWI, 0x4, (char *)&read, 4);
	}
	// Wait 10 ms before data is written into EEPROM
	AT91F_DBGU_Printk("Compare Write and Read\n\r");
	if (read == write)
	{
		
				AT91F_DBGU_Printk("Test TWI OK!\n\r");
	    	}   
	else 
	{   
		AT91F_DBGU_Printk("Error during test!\n\r");
	    
	}

}

void AT91F_US0_Init(void)
{
  
  //*step1 Drive US0 signals
  AT91F_US0_CfgPIO ();
//*step2 Enable Peripheral clock in PMC for  US0 
 AT91F_US0_CfgPMC();
//*step3 configure US0
  AT91F_US_Configure((AT91PS_USART)AT91C_BASE_US0,MCK,AT91C_US_ASYNC_MODE,BAUD_RATE,TIME_GUARD);
//*step4 Enable Tx and Rx
  AT91F_US_EnableTx((AT91PS_USART)AT91C_BASE_US0);
  AT91F_US_EnableRx((AT91PS_USART)AT91C_BASE_US0);
  
}
void Delay(int i)
{	int j,k;
	for(j=0;j<i;j++)
	{
	k=0;
	}
}

⌨️ 快捷键说明

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