基于飞思卡尔MC9S12XEP的SPI程序

内容发布更新时间 : 2024/9/22 16:46:50星期一 下面是文章的全部内容请认真阅读。

Addr[16:23]

Dummy = SPIReadWriteByte(SPI2, ((uint8_t *)&Address)[1]); //write Addr[8:15]

Dummy = SPIReadWriteByte(SPI2, ((uint8_t *)&Address)[2]); //write Addr[0:7]

for(i=0; i

Dummy = SPIReadWriteByte(SPI2, Buf[i]); //write the data to be sent }

SPICSHigh(Chip); //bring the chosen chip's CS pin high SPIWaitBusy(Chip); //判忙 }

///---------------------------------------------------------------------------------------------------------- //Function: 擦除flash一个sector //Param: //Return: //note

///----------------------------------------------------------------------------------------------------------

SPI_EXT void SPIEraseSector(uint8_t Chip, uint32_t Address) {

SPIWriteEnable(Chip); //write enable SPIWaitBusy(Chip); //判忙

SPICSLow(Chip); //bring the chosen chip's CS pin down

Dummy = SPIReadWriteByte(SPI2, SPI_CMD_4K_ERASE); //write 4K_Erase

command Dummy = SPIReadWriteByte(SPI2, ((uint8_t *)&Address)[0]); //write Addr[16:23]

Dummy = SPIReadWriteByte(SPI2, ((uint8_t *)&Address)[1]); //write Addr[8:15]

Dummy = SPIReadWriteByte(SPI2, ((uint8_t *)&Address)[2]); //write Addr[0:7]

SPICSHigh(Chip); //bring the chosen chip's CS pin high

SPIWriteDisable(Chip);

SPIWaitBusy(Chip); //判忙 }

///---------------------------------------------------------------------------------------------------------- //Function: 擦除flash一个block //Param: //Return: //note

///----------------------------------------------------------------------------------------------------------

SPI_EXT void SPIEraseBlock(uint8_t Chip, uint32_t Address) {

SPIWriteEnable(Chip); SPIWaitBusy(Chip); //判忙

SPICSLow(Chip); //bring the chosen chip's CS pin down

Dummy = SPIReadWriteByte(SPI2, SPI_CMD_64K_ERASE); //write 64K_Erase command

Dummy = SPIReadWriteByte(SPI2, ((uint8_t *)&Address)[0]); //write Addr[16:23]

Dummy = SPIReadWriteByte(SPI2, ((uint8_t *)&Address)[1]); //write Addr[8:15]

Dummy = SPIReadWriteByte(SPI2, ((uint8_t *)&Address)[2]); //write Addr[0:7]

SPICSHigh(Chip); //bring the chosen chip's CS pin high

SPIWriteDisable(Chip);

SPIWaitBusy(Chip); //判忙 }

///---------------------------------------------------------------------------------------------------------- //Function: 擦除flash整片芯片 //Param: //Return: //note

///----------------------------------------------------------------------------------------------------------

SPI_EXT void SPIEraseChip(uint8_t Chip) {

SPIWriteEnable(Chip);

SPIWaitBusy(Chip); //判忙

SPICSLow(Chip);

Dummy = SPIReadWriteByte(SPI2, SPI_CMD_CHIP_ERASE);

SPICSHigh(Chip);

SPIWaitBusy(Chip); //判忙 SPIWriteDisable(Chip); }

/*---------------------------------------------------------------------------------------------------------- 向SPI_FlashBuf里面写入数据

------------------------------------------------------------------------------------------------------------*/ //SPI_EXT SPIWriteToBuf

/*---------------------------------------------------------------------------------------------------------- 向SPI_FlashBuf里面写入数据

------------------------------------------------------------------------------------------------------------*/

SPI_EXT void SPIWriteToBuf(uint8_t array[],uint8_t array_len) {

uint8_t i;

for(i=0;i< array_len;i++)

SPI_FlashBuf[i] = array[i];

SPI2CR1_SPIE=1;//给SPI缓冲区写完数据,打开中断,将数据写入到Flash里面。 }

/*---------------------------------------------------------------------------------------------------------- SPI Flash写入地址

------------------------------------------------------------------------------------------------------------*/

/*---------------------------------------------------------------------------------------------------------- SPI中断函数

------------------------------------------------------------------------------------------------------------*/ SPI_EXT void SPI2_Interrupt() {

static uint32_t Address = 0x000000;

SPIWritePage(0,Address, SPI_FlashBuf,Write_To_FlashDataSize);

//Address = Address + 0x000100 ;

// if(Address>=0x800000)

// Address=0x000000;

SPI2CR1_SPIE=0;//SPI中断函数给Flash写完数据后关闭中断。 }

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4 ceshi