?? tms470r1a256_spi_09.c
字號(hào):
//*****************************************************************************
// TMS470 Demo - SPI Sample Program slave 5pin int
//
// This is a SPI 5 pin - Slave Mode - Interrupt configuration. Data is received
// from SPI 1 After recieving SPI data an interrupt is generated that lights
// leds on the IAR TMS470R1VF346 EVM. This is a 5 pin configuration
// using SIMO SPICLK SOMI SCS ENA pins. Clock speed 12 Mhz.
//
//
//
// TMS-FET470A256
// _________________
// | |
// /|\| OSCIN|-
// | | | 12MHz
// --|PLLDIS OSCOUT|-
// | |
// ---|SPICLK SIMO|---
// | |
// ---|SCS SOMI|---
// | |
// | ENA|---
// | |
// | HET0|--- LED1
// | ... |
// | HET31|--- LED16
// |_________________|
//
//
//
// J. Mangino
// Texas Instruments, Inc
// January 2005
// Built with IAR Embedded Workbench Version: 4.20A
//******************************************************************************
#include <intrinsic.h>
#include "iotms470r1a256.h"
#include "tms470r1a256_bit_definitions.h"
unsigned int datp;
int* ip;
void TMS470LedSet(unsigned int mask)
{
unsigned int tmp;
mask ^= 0xFFFF;
tmp = (mask << 16)& 0x80000000;
tmp |= (mask << 10)& 0x01000000;
tmp |= (mask << 8) & 0x003c0000;
tmp |= (mask << 4) & 0x00003c00;
tmp |= (mask << 3) & 0x000001c0;
tmp |= (mask << 2) & 0x00000010;
tmp |= (mask << 1) & 0x00000004;
tmp |= mask & 0x00000001;
HETDOUT = tmp ;
}
void SPI1_irq_handler()
{
datp = SPI1BUF;
TMS470LedSet(datp);
SPI1DAT0 = 0x00; // data to set ENA low
}
//------------------------------------------------------------------------------
// TMS470R1A256 Standard Interrupt Handler
//------------------------------------------------------------------------------
#pragma vector = IRQV
__irq __arm void irq_handler(void)
{
switch((0xff & IRQIVEC)-1)
{
case CIM_SPI1 : SPI1_irq_handler(); break;
}
}
void main(void)
{
// Set up peripheral registers.
// First disable interrupts.
__disable_interrupt();
// Setup system.
PCR = CLKDIV_4; // ICLK = SYSCLK/4
PCR |= PENABLE; // enable peripherals
REQMASK=(1 << CIM_SPI1); // Enable SPI Interrupt mask
HETDIR = 0xffffffff; // Set HET as GIO outputs
HETDOUT = 0x813c3dd5; // Output off
HETDOUT = 0x00000000; // Output on
HETDOUT = 0x813c3dd5; // Output off
// SPI 1 Setup
SPI1CTRL1= CHARLEN_16 + PRESCALE_1; // char len = 16 prescale = 1 spi baud =Iclk/2
SPI1CTRL2 = 0x00; // Slave mode
SPI1CTRL3 = RX_INT_EN; // Enable SPI1 Interrupt
SPI1PC6= SOMI_FUN + SIMO_FUN + CLK_FUN + SCS_FUN + ENA_FUN; // SIMO SPICLK ENA enables
SPI1CTRL2 |= SPIEN; // Enable SPIs
datp = SPI1BUF; // Dummy Read to clear buffer
__enable_interrupt(); // Enable Interrupts
SPI1DAT0 = 0x00; // Initial data to set ENA low
// Loop forever.
while (1);
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -