|
各位前辈,小妹最近在使用AVR32SPI从模式时,AVR32SPI接收正常,但是SPI发送多个字节时(SPI发送中断未使能),其中某些字节的某几位发生错误,也没有规律。折腾了近一个月未得解啊,呼救!SPI发送代码:
int retry,spif;
U32 tmp1;
U8 i;
Disable_global_interrupt();//关闭全局中断 W*
//gpio_enable_pin_pull_up(COMM_SPI_SCK_PIN);
//gpio_enable_pin_glitch_filter(COMM_SPI_SCK_PIN);
for(i=0;i<spi_tx_len;i++)
{
for(retry=2000;retry>0;retry--)
{
delay_us(1);
if(HIGH==gpio_get_pin_value(COMM_SPI_NPCS_PIN))
break;
}
if(0==retry)
{
bit_spi_tx_ing=FALSE;
return;
}
gpio_clr_gpio_pin(PROIS_REQ);
delay_us(10);//请求继续发送数据
gpio_set_gpio_pin(PROIS_REQ);
//
for(retry=2000;retry>0;retry--)
{
delay_us(1);
if(LOW==gpio_get_pin_value(COMM_SPI_NPCS_PIN))
break;
}
if(0==retry)
{
bit_spi_tx_ing=FALSE;
return;
}
//发送字节中的8位信息
spif =1;
tmp1=spi_tx_buf[i];
spif=spi_write(COMM_SPI, tmp1);
if(spif!=0)
{
bit_spi_tx_ing=FALSE;
return;
}
//
}
Enable_global_interrupt();//使能全局中断
COMM_SPI->idr &= ~(1<<AVR32_SPI_IDR_RDRF_OFFSET);
COMM_SPI->ier |= 1<<AVR32_SPI_IER_RDRF_OFFSET;
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|