📄 l3_interface.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 + -