📄 spi.c
字号:
// Compiler : IAR EWAVR
// Target : M8
// Crystal: 8Mhz
//#include "main.h"
extern uchar uart_ping_data[4];
void eep_program_disable();
#define SS 2
#define MOSI 3
#define MISO 4
#define SCK 5
#define DDR_SPI DDRB //
#define PORT_SPI PORTB
//********************define of AT25128*******************************
#define WREN 0x06 //set write enable latch
#define WRDI 0x04 //reset write enable latch
#define RDSR 0x05 //read status register
#define WRSR 0x01 //write status register
#define READ 0x03 //read data from memory array
#define WRITE 0x02 //write data to memory array
#define ALL_NOT_PRO 0x02 //all not protected,to status register
#define ALL_PROTECTED 0x8C //all protected ,to status register
#define SIZE 32 //max data number write to eeprom everytime
uchar SPI_tx_buffer[SIZE] = { 0x00,0xaa,0xaa,0x00,0x00,0xaa,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//SPI transmit buffer
uchar SPI_rx_buffer[SIZE + 1] = {0xaa,0xaa,0xaa,0xaa,0x00,0x00,0x00,0x00,0x00,0x00}; //SPI receive buffer
uchar SPI_tx_counter = 0x00; //data number counter
//uchar SPI_array_num = 0x00; //save the array data number
uchar SPI_op_code = 0x00; //the spi op_code transmit control(counter)
uchar __flash *P_SPI_tx; //data pionter
uchar SPI_start_flag = 0x00; //the flag of if the transmit start or not
uchar SPI_end_flag = 0x00; //the flag of if the transmit end or not
uchar SPI_once_end_flag = 0x00; //one row data transmit over flag
uchar SPI_all_end_flag = 0x00; //all data transfer
uchar SS_SET_TIME = 0x00;
uchar SPI_rx_counter = 0x00; //
uchar SPI_pro_flag = 0x00; //which row to transmit now
uchar SPI_status = 0x00;
uchar SPI_Rstatus_flag = 0x00;
uchar SPI_rx_flag = 0x00; //read eeprom
__regvar __no_init uchar SPI_tx_addl @ 14; //global variable in register,save the low address byte in eeprom
__regvar __no_init uchar SPI_tx_addh @ 13; //global variable in register,save the high address byte in eeprom
uchar SPI_address_count = 0x00; //write data number counter,max 64 bytes
//************************************************************************************************
//#define PRE_OPCODE_NUM 14
//__flash uchar pre_opcode[17] = {0x10,0x00,0x00,0x10,0xAA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //14 effect bytes
__flash uchar dspcode[] = {
0x20,0x00,0x00,0x08,0xAA,0x00,0x18,0x00,0x03,0x08,0x00,0x00,0x10,0x00,0x00,0x00,0x80,0x03,0x24,0x00,0x00,0x04,0x00,0x4A,0x11,0xEE,0xFF,0xF4,0x95,0x80,0x00,0x77,0x11,0x00,0x38,
0x20,0x00,0x20,0x80,0x81,0x77,0x11,0x00,0x39,0x10,0x81,0xEE,0x01,0x8A,0x11,0xFC,0x00,0x4A,0x11,0xEE,0xFF,0xF4,0x95,0x80,0x00,0x77,0x11,0x00,0x38,0x80,0x81,0x77,0x11,0x00,0x39,
0x20,0x00,0x40,0x10,0x03,0x80,0x81,0xEE,0x01,0x8A,0x11,0xFC,0x00,0x4A,0x11,0xEE,0xFF,0xF4,0x95,0x80,0x00,0x77,0x11,0x00,0x48,0x80,0x81,0x77,0x11,0x00,0x49,0x10,0x81,0xEE,0x01,
0x20,0x00,0x60,0x8A,0x11,0xFC,0x00,0x4A,0x11,0xEE,0xFF,0xF4,0x95,0x80,0x00,0x77,0x11,0x00,0x48,0x80,0x81,0x77,0x11,0x00,0x49,0x10,0x03,0x80,0x81,0xEE,0x01,0x8A,0x11,0xFC,0x00,
0x20,0x00,0x80,0xFC,0x00,0x4A,0x11,0xEE,0xFE,0xF4,0x95,0x76,0x00,0x00,0x00,0xF2,0x74,0x04,0x0D,0xF4,0x95,0xE8,0x00,0x76,0x00,0x00,0x20,0xF2,0x74,0x04,0x0D,0xF4,0x95,0xE8,0x01,
0x20,0x00,0xA0,0x76,0x00,0x00,0x03,0xF2,0x74,0x04,0x0D,0xF4,0x95,0xE8,0x0E,0x76,0x00,0x01,0xA0,0xF2,0x74,0x04,0x0D,0xF4,0x95,0xE8,0x02,0x76,0x00,0x00,0x00,0xF2,0x74,0x04,0x0D,
0x20,0x00,0xC0,0xF4,0x95,0xE8,0x03,0x76,0x00,0x01,0xA0,0xF2,0x74,0x04,0x0D,0xF4,0x95,0xE8,0x04,0x76,0x00,0x00,0x00,0xF2,0x74,0x04,0x0D,0xF4,0x95,0xE8,0x05,0xF2,0x74,0x06,0x2F,
0x20,0x00,0xE0,0xF4,0x95,0xE8,0x0A,0xF2,0x74,0x06,0x2F,0xF4,0x95,0xE8,0x0A,0x77,0x11,0x00,0x23,0x76,0x81,0x00,0x00,0x77,0x11,0x00,0x22,0x76,0x81,0x00,0x00,0x76,0x00,0x00,0x01,
0x20,0x01,0x00,0xF2,0x74,0x04,0x0D,0xF4,0x95,0xE8,0x00,0x76,0x00,0x00,0x01,0xF2,0x74,0x04,0x0D,0xF4,0x95,0xE8,0x01,0xF2,0x74,0x06,0x2F,0xF4,0x95,0xE8,0x0A,0x77,0x11,0x00,0x00,
0x20,0x01,0x20,0x69,0x81,0x00,0x10,0xEE,0x02,0x8A,0x11,0xFC,0x00,0x4A,0x11,0xEE,0xFE,0xF4,0x95,0x76,0x00,0x00,0x00,0xF2,0x74,0x04,0x28,0xF4,0x95,0xE8,0x01,0x76,0x00,0x00,0x00,
0x20,0x01,0x40,0xF2,0x74,0x04,0x28,0xF4,0x95,0xE8,0x00,0x76,0x00,0x18,0x00,0xF2,0x74,0x04,0x28,0xF4,0x95,0xE8,0x00,0x76,0x00,0x00,0x0D,0xF2,0x74,0x04,0x28,0xF4,0x95,0xE8,0x0E,
0x20,0x01,0x60,0x76,0x00,0x00,0x00,0xF2,0x74,0x04,0x28,0xF4,0x95,0xE8,0x02,0x76,0x00,0x00,0x00,0xF2,0x74,0x04,0x28,0xF4,0x95,0xE8,0x04,0x76,0x00,0x20,0x00,0xF2,0x74,0x04,0x28,
0x20,0x01,0x80,0xF4,0x95,0xE8,0x07,0x76,0x00,0x00,0x01,0xF2,0x74,0x04,0x28,0xF4,0x95,0xE8,0x06,0x76,0x00,0x00,0x00,0xF2,0x74,0x04,0x28,0xF4,0x95,0xE8,0x05,0xF2,0x74,0x06,0x2F,
0x20,0x01,0xA0,0xF4,0x95,0xE8,0x0A,0x76,0x00,0x00,0x00,0xF2,0x74,0x04,0x28,0xF4,0x95,0xE8,0x03,0x76,0x00,0x00,0x40,0xF2,0x74,0x04,0x28,0xF4,0x95,0xE8,0x01,0xF2,0x74,0x06,0x2F,
0x20,0x01,0xC0,0xF4,0x95,0xE8,0x0A,0x77,0x11,0x00,0x43,0x76,0x81,0x00,0x00,0x77,0x11,0x00,0x42,0x76,0x81,0x00,0x00,0x76,0x00,0x00,0x41,0xF2,0x74,0x04,0x28,0xF4,0x95,0xE8,0x01,
0x20,0x01,0xE0,0x76,0x00,0x18,0x01,0xF2,0x74,0x04,0x28,0xF4,0x95,0xE8,0x00,0xF2,0x74,0x06,0x2F,0xF4,0x95,0xE8,0x0A,0x77,0x11,0x00,0x00,0x69,0x81,0x0C,0x00,0xEE,0x02,0x8A,0x11,
0x20,0x02,0x00,0xFC,0x00,0xF4,0x95,0x4A,0x08,0x4A,0x09,0x4A,0x0A,0x4A,0x0B,0x4A,0x0C,0x4A,0x0D,0x4A,0x10,0x4A,0x11,0x4A,0x12,0x4A,0x13,0x4A,0x14,0x4A,0x15,0x4A,0x16,0x4A,0x17,
0x20,0x02,0x20,0x4A,0x17,0x4A,0x19,0x4A,0x0E,0x4A,0x06,0x4A,0x07,0x4A,0x1A,0x4A,0x1D,0x4A,0x1B,0x4A,0x1C,0x68,0xF8,0x00,0x07,0x7D,0x3F,0x69,0xF8,0x00,0x07,0x40,0x00,0x68,0xF8,
0x20,0x02,0x40,0x00,0x1D,0xFF,0xFC,0x48,0x18,0x68,0xF8,0x00,0x18,0xFF,0xFE,0xF4,0x95,0xF4,0x95,0x4A,0x08,0xEE,0xFD,0x77,0x11,0x00,0x21,0x71,0x81,0x30,0xA7,0x77,0x11,0x00,0x20,
0x20,0x02,0x60,0x71,0x81,0x30,0xA6,0xF7,0xB8,0x72,0x11,0x30,0xA5,0x6F,0xF8,0x30,0xA6,0x0C,0x5F,0x80,0xE1,0x02,0x00,0x10,0xF8,0x30,0xA6,0x4E,0xF8,0x30,0xAA,0x12,0xF8,0x30,0x7F,
0x20,0x02,0x80,0x4E,0x00,0x56,0xF8,0x30,0xAA,0xF0,0x74,0x07,0x09,0x4E,0xF8,0x30,0xAA,0xF7,0xB8,0x56,0xF8,0x30,0xAA,0xF4,0x79,0x4E,0xF8,0x30,0xAA,0x71,0xF8,0x30,0xAB,0x30,0xA6,
0x20,0x02,0xA0,0x77,0x11,0x00,0x23,0x76,0x81,0x00,0x00,0x77,0x11,0x00,0x22,0x70,0x81,0x30,0xA6,0x6B,0xF8,0x30,0xA5,0x00,0x01,0x72,0x11,0x30,0xA5,0x77,0x10,0x00,0x80,0xF5,0xA9,
0x20,0x02,0xC0,0xF8,0x30,0x05,0x70,0x10,0xF8,0x30,0x4B,0xF8,0x44,0x05,0x70,0x76,0xF8,0x30,0xA5,0x00,0x00,0x4A,0x1A,0x77,0x13,0x03,0x80,0x77,0x14,0x03,0x00,0xEC,0x7F,0xE5,0x9A,
0x20,0x02,0xE0,0x77,0x13,0x02,0x00,0x77,0x14,0x03,0x80,0xEC,0x7F,0xE5,0x9A,0x8A,0x1A,0x76,0xF8,0x30,0x4B,0x00,0x01,0x60,0xF8,0x30,0x4B,0x00,0x01,0xF8,0x20,0x05,0x78,0x76,0xF8,
0x20,0x03,0x00,0x30,0x4B,0x00,0x00,0xEE,0x03,0x8A,0x18,0xF4,0x95,0x8A,0x1C,0x8A,0x1B,0x8A,0x1D,0x8A,0x1A,0x8A,0x07,0x8A,0x06,0x8A,0x0E,0x8A,0x19,0x8A,0x17,0x8A,0x17,0x8A,0x16,
0x20,0x03,0x20,0x8A,0x15,0x8A,0x14,0x8A,0x13,0x8A,0x12,0x8A,0x11,0x8A,0x10,0x8A,0x0D,0x8A,0x0C,0x8A,0x0B,0x8A,0x0A,0x8A,0x09,0x8A,0x08,0xF4,0xEB,0x4A,0x07,0x4A,0x1D,0x68,0xF8,
0x20,0x03,0x40,0x00,0x07,0x7D,0x3F,0x69,0xF8,0x00,0x07,0x40,0x00,0x68,0xF8,0x00,0x1D,0xFF,0xFC,0xF4,0x95,0x8A,0x1D,0x8A,0x07,0xF4,0xEB,0xF4,0x95,0x4A,0x08,0x4A,0x09,0x4A,0x0A,
0x20,0x03,0x60,0x4A,0x10,0x4A,0x11,0x4A,0x06,0x4A,0x07,0x4A,0x1D,0x68,0xF8,0x00,0x07,0x7D,0x3F,0x69,0xF8,0x00,0x07,0x40,0x00,0x68,0xF8,0x00,0x1D,0xFF,0xFC,0xF4,0x95,0x77,0x11,
0x20,0x03,0x80,0x00,0x41,0x71,0x81,0x30,0xAC,0x77,0x11,0x00,0x40,0x71,0x81,0x30,0xAD,0x60,0xF8,0x30,0xA4,0x00,0x01,0xF8,0x20,0x05,0xD7,0x72,0x11,0x30,0x7E,0xF4,0x95,0x70,0xE1,
0x20,0x03,0xA0,0x30,0x7F,0x30,0xAC,0x6B,0xF8,0x30,0x7E,0x00,0x01,0x72,0x11,0x30,0x7E,0x77,0x10,0x00,0x05,0xF5,0xA9,0xF8,0x30,0x05,0xE6,0x76,0xF8,0x30,0xA4,0x00,0x00,0xF0,0x73,
0x20,0x03,0xC0,0x05,0xE6,0x60,0xF8,0x30,0xAC,0x00,0x05,0xF8,0x20,0x05,0xE6,0x10,0xF8,0x30,0xA4,0xF8,0x44,0x05,0xE6,0x76,0xF8,0x30,0xA4,0x00,0x01,0x76,0xF8,0x30,0x7E,0x00,0x00,
0x20,0x03,0xE0,0x60,0xF8,0x30,0xA4,0x00,0x02,0xF8,0x20,0x06,0x00,0x72,0x11,0x30,0x7E,0xF4,0x95,0x70,0xE1,0x30,0x84,0x30,0xAC,0x6B,0xF8,0x30,0x7E,0x00,0x01,0x72,0x11,0x30,0x7E,
0x20,0x04,0x00,0x77,0x10,0x00,0x20,0xF5,0xA9,0xF8,0x30,0x06,0x0F,0x76,0xF8,0x30,0xA4,0x00,0x00,0xF0,0x73,0x06,0x0F,0x60,0xF8,0x30,0xAC,0x00,0x20,0xF8,0x20,0x06,0x0F,0x10,0xF8,
0x20,0x04,0x20,0x30,0xA4,0xF8,0x44,0x06,0x0F,0x76,0xF8,0x30,0xA4,0x00,0x02,0x76,0xF8,0x30,0x7E,0x00,0x00,0x77,0x11,0x00,0x43,0x70,0x81,0x30,0xAC,0x77,0x11,0x00,0x42,0x70,0x81,
0x20,0x04,0x40,0x30,0xAD,0x8A,0x1D,0x8A,0x07,0x8A,0x06,0x8A,0x11,0x8A,0x10,0x8A,0x0A,0x8A,0x09,0x8A,0x08,0xF4,0xEB,0x4A,0x07,0x4A,0x1D,0x68,0xF8,0x00,0x07,0x7D,0x3F,0x69,0xF8,
0x20,0x04,0x60,0x00,0x07,0x40,0x00,0x68,0xF8,0x00,0x1D,0xFF,0xFC,0xF4,0x95,0x8A,0x1D,0x8A,0x07,0xF4,0xEB,0x4A,0x11,0xEE,0xFF,0xF4,0x95,0x80,0x00,0xF1,0x10,0x00,0x01,0x48,0x08,
0x20,0x04,0x80,0xFA,0x45,0x06,0x43,0xF4,0x95,0x81,0x00,0x71,0x00,0x00,0x11,0x48,0x11,0xF0,0x10,0x00,0x01,0x6E,0x81,0x06,0x3A,0xF4,0x95,0x80,0x00,0xEE,0x01,0x8A,0x11,0xFC,0x00,
0x20,0x04,0xA0,0x4A,0x11,0x77,0x58,0x00,0x00,0x77,0x12,0x00,0x58,0x96,0x0F,0xF8,0x20,0x06,0x51,0x96,0x0F,0xF8,0x30,0x06,0x4E,0x77,0x58,0x81,0x07,0x77,0x11,0x00,0x2B,0x76,0x81,
0x20,0x04,0xC0,0x00,0x01,0x77,0x28,0x42,0x40,0x77,0x1D,0x00,0xA0,0x77,0x29,0x08,0x02,0x77,0x00,0x00,0x00,0xF0,0x74,0x04,0x37,0xF0,0x74,0x04,0x8B,0xF6,0xBB,0xF7,0xB8,0x10,0xF8,
0x20,0x04,0xE0,0x2A,0x7F,0xF8,0x47,0x06,0x64,0xF0,0x73,0x06,0x64,0xFC,0x00,0xFC,0x00,0x77,0x18,0x2C,0x00,0x6B,0xF8,0x00,0x18,0x03,0xFF,0x68,0xF8,0x00,0x18,0xFF,0xFE,0xF7,0xB8,
0x20,0x05,0x00,0xF7,0xBE,0xF6,0xB9,0xF4,0xA0,0xF6,0xB7,0xF6,0xB5,0xF6,0xB6,0xF0,0x20,0x07,0x24,0xF1,0x00,0x00,0x01,0xF8,0x4D,0x06,0x99,0xF6,0xB8,0xF4,0x95,0xF0,0x20,0x07,0x24,
0x20,0x05,0x20,0xF0,0x73,0x06,0x93,0x7E,0xF8,0x00,0x12,0xF0,0x00,0x00,0x01,0x47,0xF8,0x00,0x11,0x7E,0x92,0x00,0xF8,0x00,0x11,0xF0,0x00,0x00,0x01,0x7E,0xF8,0x00,0x11,0xF0,0x00,
0x20,0x05,0x40,0x00,0x01,0x6C,0x89,0x06,0x88,0xF7,0xB8,0xEE,0xFC,0xF0,0x20,0xFF,0xFF,0xF1,0x00,0x00,0x01,0xF8,0x4D,0x06,0xB1,0xF6,0xB8,0xF4,0x95,0xF0,0x20,0xFF,0xFF,0xF2,0x73,
0x20,0x05,0x60,0x06,0xAB,0x4E,0x02,0xF4,0x95,0xF5,0xE3,0x56,0x02,0x7E,0x00,0x11,0x00,0xFA,0x4C,0x06,0xA9,0x6B,0x03,0x00,0x01,0xF6,0xB8,0xEE,0x04,0xF0,0x74,0x06,0x46,0xF0,0x74,
0x20,0x05,0x80,0x06,0xB7,0x4A,0x11,0x4A,0x16,0xEE,0xFF,0x10,0xF8,0x30,0xD1,0xF4,0xE3,0x72,0x11,0x30,0xAE,0x10,0xF8,0x00,0x11,0xF8,0x45,0x06,0xCF,0x48,0x11,0xF0,0x00,0x30,0xAF,
0x20,0x05,0xA0,0x88,0x16,0xF4,0x95,0xF4,0x95,0x10,0xEE,0xFF,0xFF,0xF4,0xE3,0x6C,0xE9,0xFF,0xFF,0x06,0xC9,0x10,0xF8,0x30,0xD0,0xF8,0x45,0x06,0xD6,0x10,0xF8,0x30,0xD0,0xF4,0xE3,
0x20,0x05,0xC0,0x10,0xF8,0x30,0xCF,0xF8,0x45,0x06,0xDD,0x10,0xF8,0x30,0xCF,0xF4,0xE3,0x10,0xF8,0x30,0xD2,0xF4,0xE3,0xF0,0x74,0x07,0x06,0xF0,0x73,0x06,0xE2,0x4A,0x11,0x88,0x11,
0x20,0x05,0xE0,0x10,0xF8,0x30,0xD1,0xF4,0xE3,0xF7,0xB8,0xE8,0x20,0x08,0xF8,0x30,0xAE,0xF8,0x46,0x06,0xF6,0x10,0xF8,0x30,0xD2,0xF4,0xE3,0xF2,0x73,0x07,0x04,0xF4,0x95,0xE8,0x01,
0x20,0x06,0x00,0x72,0x12,0x30,0xAE,0x48,0x12,0xF0,0x00,0x00,0x01,0x80,0xF8,0x30,0xAE,0x70,0xE2,0x30,0xAF,0x00,0x11,0x10,0xF8,0x30,0xD2,0xF4,0xE3,0xE8,0x00,0x8A,0x11,0xFC,0x00,
0x20,0x06,0x20,0xF4,0x95,0xF0,0x73,0x07,0x07,0xF4,0x95,0x4A,0x0B,0x4A,0x0C,0x4A,0x0D,0x4A,0x0E,0xEE,0xFD,0xF4,0x95,0x4E,0x00,0x31,0x09,0x44,0x08,0x35,0x01,0x24,0x09,0xF7,0x6F,
0x1C,0x06,0x40,0xF6,0x01,0xEE,0x03,0x8A,0x0E,0x8A,0x0D,0x8A,0x0C,0x8A,0x0B,0xFC,0x00,0xFC,0x00,0x80,0xF8,0x30,0xD1,0xFC,0x00,0x80,0xF8,0x30,0xD2,0xFC,0x00,
0x20,0x06,0x5C,0x01,0x4F,0x00,0x00,0x07,0x24,0x00,0x01,0x30,0x7E,0x00,0x00,0x00,0x05,0x30,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x30,0x84,0x00,0x00,
0x20,0x06,0x7C,0x00,0x00,0x00,0x00,0x00,0x01,0x30,0xA4,0x00,0x00,0x00,0x01,0x30,0xA5,0x00,0x00,0x00,0x01,0x30,0xA6,0x00,0x00,0x00,0x01,0x30,0xA7,0x00,0x00,0x00,0x01,0x30,0xA8,
0x20,0x06,0x9C,0x00,0x00,0x00,0x01,0x30,0xA9,0x00,0x00,0x00,0x02,0x30,0xAA,0x00,0x00,0x00,0x00,0x00,0x80,0x2A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x20,0x06,0xBC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x20,0x06,0xDC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x32,0x00,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x20,0x06,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0B,0x00,0x32,0x00,0x1E,0x00,0x32,0x00,0x00,0x00,0x00,
0x20,0x07,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x32,0x00,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x20,0x07,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x20,0x07,0x5C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x20,0x07,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x20,0x07,0x9C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x25,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x20,0x07,0xBC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x20,0x07,0xDC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x20,0x07,0xFC,0x00,0x00,0x00,0x25,0x30,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x20,0x08,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x20,0x08,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x30,0x4A,0x00,0x00,0x00,0x01,0x30,0x4B,0x00,0x00,0x00,0x0F,0x30,0x4C,
0x20,0x08,0x5C,0x1C,0x99,0xE4,0xDF,0x00,0x00,0xF4,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0x20,0x08,0x7C,0x30,0x5B,0x7F,0x8B,0x80,0x75,0x00,0x00,0xC0,0x75,0x00,0x00,0x00,0x04,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x30,0x64,0x00,0x00,0x00,0x00,
0x20,0x08,0x9C,0x00,0x00,0x00,0x00,0x00,0x10,0x30,0x68,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x20,0x08,0xBC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x30,0x78,0x3C,0x8C,0x0F,0x38,0x00,0x02,0x30,0x7A,0x3F,0x24,0x21,0xD6,0x00,0x01,0x30,0x7C,0x00,0x01,0x00,0x01,
0x20,0x08,0xDC,0x30,0x7D,0x00,0x00,0x00,0x01,0x30,0xAE,0x00,0x00,0x00,0x01,0x30,0xCF,0x00,0x00,0x00,0x01,0x30,0xD0,0x00,0x00,0x00,0x01,0x30,0xD1,0x07,0x1D,0x00,0x01,0x30,0xD2,
0x04,0x08,0xFC,0x07,0x1D,0x00,0x00,
0x20,0x09,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0xF2,0x73,0x06,0x6D,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,
0x20,0x09,0x20,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,
0x20,0x09,0x40,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,
0x20,0x09,0x60,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,
0x20,0x09,0x80,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,
0x20,0x09,0xA0,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF2,0x73,0x04,0xF7,0xF4,0x95,0xF4,0x95,0xF2,0x73,0x05,0x93,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,
0x20,0x09,0xC0,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF2,0x73,0x05,0xA2,0xF4,0x95,0xF4,0x95,0xF2,0x73,
0x20,0x09,0xE0,0x06,0x20,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,0xF4,0x95,0xF4,0x95,0xF4,0x95,0xF4,0xEB,
0x06,0x0A,0x00,0xF4,0x95,0xF4,0x95,0xF4,0x95,
0x20,0x0A,0x06,0x00,0x40,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x32,0x00,0x00,0x00,0x01,0x00,0x32,0x00,0x06,0x00,0x32,0x00,0x32,0x00,0x00,0x00,0x32,0x00,0x32,0x00,0x32,0x00,0x00,
0x20,0x0A,0x26,0x00,0x32,0x00,0x32,0x00,0x32,0x00,0x00,0x00,0x32,0x00,0x32,0x00,0x32,0x00,0x00,0x00,0x32,0x00,0x32,0x00,0x32,0x00,0x00,0x00,0x32,0x00,0x32,0x00,0x32,0x00,0x00,
0x20,0x0A,0x46,0x00,0x32,0x00,0x32,0x00,0x32,0x00,0x00,0x00,0x32,0x00,0x32,0x00,0x32,0x00,0x01,0x00,0x32,0x00,0x32,0x00,0x32,0x00,0x00,0x00,0x32,0x00,0x32,0x00,0x32,0x00,0x00,
0x20,0x0A,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x08,0x0A,0x86,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
0x00
};
//************************************************************************************************
void delay_ss()
{
while(SS_SET_TIME--)
;
}
//***************************************
//DSP bootload wait initialize
//***************************************
void dsp_boot_wait()
{
//SFIOR = 0x04; //PUD set 1
DDR_SPI &= 0xC3; //SPI port are all intput
PORT_SPI &= 0xC3; //SPI port are all Hi-Z
DDRD &= 0xDF; //PIND.5 is input
PORTD &= 0xDF; //PIND.5 Hi-Z
}
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//SPI comm,MCU is master
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
void SPI_init()
{
uchar temp_reg;
SPCR = 0x00;
SFIOR &= 0xFB; //PUD clear 0
DDR_SPI = (1 << SS)|(1 << MOSI)|(1 << SCK); //SS,MOSI,SCK is output,MISO is input
PORT_SPI |= 0x10; //pull high resistance enable
SPSR = 0x00; //
SPCR = 0xD3; //SPI enable, MSB first,MASTER mode,fosc/4,interrupt enable
temp_reg = SPSR;
temp_reg = SPDR; //clear SPIF flag
temp_reg |= temp_reg;
}
//*****************************************
#pragma vector = SPI_STC_vect //SPI transmit interrupt
__interrupt void SPI_isr(void) //clear the SPIF flag
{
if(SPI_rx_flag == 0x00)
{
if(SPI_Rstatus_flag == 1) //read eeprom status
{
SPDR = 0xFF;
SPI_Rstatus_flag++;
}
else if(SPI_Rstatus_flag == 2)
{
SPI_status = SPDR;
SPI_Rstatus_flag++;
SET_BIT(PORT_SPI,SS); //pull up the SS,end the transmit
}
else if((SPI_end_flag == 0x00) && (SPI_Rstatus_flag == 3)) //all data transmit not end and not in read status register state
{
if(SPI_address_count == 64) //have constant write 64 bytes(1 page)
{
SPI_op_code = 0x00; //ready for send write enable op_code
SET_BIT(PORT_SPI,SS); //pull up the SS,end the transmit
SPI_Rstatus_flag = 0x00; //clear the read status flag ***
//CLR_BIT(SPCR,7); //disable SPI interrupt
}
else
{
if(SPI_tx_counter < (*P_SPI_tx)) //this array transmition not end
{
if(SPI_op_code <= 3)
SPI_op_code++;
if(SPI_op_code == 0x01) //at the beginning of this array data transmit
{
SET_BIT(PORT_SPI,SS); //pull up the SS
CLR_BIT(PORT_SPI,SS); //pull down the SS
SPDR = WRITE; //send the write op_code
}
else if(SPI_op_code == 0x02)
SPDR = SPI_tx_addh; //send the address high byte
else if(SPI_op_code == 0x03)
SPDR = SPI_tx_addl; //send the address low byte
else if(SPI_op_code == 0x04) //send this buffer data
{
SPDR = SPI_tx_buffer[SPI_tx_counter];
SPI_tx_counter++;
SPI_address_count++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -