本帖最后由 we_1802397876 于 2026-1-14 14:11 编辑
_attribute_ram_code_sec_noinline_ void irq_handler(void)
{
irq_cnt ++;
unsigned char irq_status = reg_spi_slave_irq_status;
//An interrupt is triggered after each master spi write or read is completed (CS changes from low to high).
//Note that it is unable to distinguish which condition triggers it.
if(irq_status & FLD_SLAVE_SPI_IRQ)
{
reg_spi_slave_irq_status = irq_status;
spi_irq_cnt ++;
spi_slave_irq_handler();
}
}
volatile unsigned char buff[SPI_BUFFER_CNT] __attribute__((section(".spi_slave_buff")));
unsigned char slave_buf[SPI_BUFFER_CNT];
void spi_slave_irq_handler(void)
{
/*if(buff[0]==SPI_DATA_HEAD){//Judge whether DataHead is correct.
slave_rx_length=buff[1];
if( buff[slave_rx_length-1]==SPI_DATA_END ){//Judge whether DataEnd is correct.
for(int i=0;i<slave_rx_length;i++){
if(slave_buf!=buff){//Get data that Master SPI writes to Slave.
slave_buf=buff;//If Master data has been updated, copy data to slave buff.
}
}
}
}*/
memcpy(slave_buf, (void *)buff, SPI_BUFFER_CNT);
spi_slave_received = 1;
}
怎样才能读数据呢?
slave模式下,中断倒是能触发,CS从低到高时触发一次,但是buff里面什么都没有啊!!!要怎么样才能把数据取出来呢?
|