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

📄 l3_interface.c

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 C
字号:
//=====================================================================  
//       TEXAS INSTRUMENTS INCORPORATED PROPRIETARY INFORMATION             
// Property of Texas Instruments -- For Unrestricted Internal Use Only   
// Unauthorized reproduction and/or distribution is strictly prohibited  
// This product is protected under copyright law and trade secret law as 
// an unpublished work.Created 1987,(C) Copyright 1997 Texas Instruments.
// All rights reserved.                                                  
//=====================================================================  

#include "pers_conf_a9.h"
#include "l3_interface.h"
#include "timer32_a9.h" 
#include "gpio_a9.h"
#include "inth.h"
#include "clkmarm.h"


// flag for timer1 interrupt
//extern BOOL interrupt_timer1_occured;

// flag for timer1 interrupt
extern BOOL interrupt_timer32_occured;

//---------------------------------------
//     GPIO config for L3 interface      
//---------------------------------------

void L3_InitGpio(void)
{
  // config the DCR: IO 10,11,12 as output for L3
  gpio_set_all_dcr(GPIO_ReadAllDcr() & DCR_FOR_L3_INTERFACE);
  // set the L3 outputs
  gpio_set_all_dor(GPIO_ReadAllDor() | INIT_DOR_FOR_L3_INTERFACE);
}


//-----------------------------------------------------
// Initialize ARM Interrupt Handler for Timer 32kHz        
//-----------------------------------------------------
void L3_InitTimer32(void)
{
  // Init interrupt for Timer 32 kHz
  INTH_InitLevel (INTH_FIQNIRQ_TIMER_32K,         // interrupt number
		  INTH_IRQ,                    // InterruptKind Irq or Fiq
		  INTH_FIQNIRQ_TIMER_32K,         // priority
		  INTH_FALLING_EDGE_SENSITIVE);   // type level or edge

  // Enable IRQ Timer 32 kHz
  INTH_EnableOneIt(INTH_FIQNIRQ_TIMER_32K);



  // Timer 32 kHz configuration
    timer32_set_CR(STOP_TIMER,RELOAD_TIMER,IT_ENABLED,AUTO_RESTART_MODE);
    timer32_set_TVR(TIME_FOR_CLOCK);	
} 


//-----------------------------------------------------
// Protocol for sending one byte with L3 interface     
//-----------------------------------------------------

void L3_SendByte(UWORD8 byte_to_send)
{
BOOL clock_level=True;
UWORD8 nb_bits;

   timer32_set_CR(START_TIMER,RELOAD_TIMER,IT_ENABLED,AUTO_RESTART_MODE);

	nb_bits=0;
	while (nb_bits<=7)
	  {
		if (interrupt_timer32_occured == True)
		  {
		    if (clock_level==True)
		      {
			L3CLOCK_LOW;
			clock_level=False;
			if (byte_to_send & MASK_FOR_L3DATA)
			  {
			  L3DATA_1;
			  }
			else
			  {
			  L3DATA_0;
			  }
		      }
		    else 
		      {
			L3CLOCK_HIGH;
			clock_level=True;
			nb_bits++;
			byte_to_send=byte_to_send>>1;
		      }
		    interrupt_timer32_occured = False;	
		  }
	  }
	while (interrupt_timer32_occured == False)
		{};
	interrupt_timer32_occured = False;
    timer32_set_CR(STOP_TIMER,RELOAD_TIMER,IT_ENABLED,AUTO_RESTART_MODE);

}

⌨️ 快捷键说明

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