|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
spi从机中断方式的问题 |
作者:sinhwa 栏目:MCU技术 |
zlg900帮忙看看,先谢谢了。 开始用polling方式没问题了。 void SpiInit(void) { P2M1 = 0x00; P2M2 = 0x2c; SPCTL = 0x48; SPSTAT = 0xc0; //clear spi status flag bits } void main(void) { ................. SpiInit(); while(1) { UartPuts("SPI TEST!!!!\n\r"); while((SPSTAT & 0x80)==0); //wait for SPIF ==1 spi_rcv_data = SPDAT; //if == 1 read SPDAT #ifdef __SPI_DEBUG__ ConvertByte(spi_rcv_data,&asciival); //convert hex to ascii UartPuts(&asciival);UartPuts("\n\r"); #endif if (gSpiRcvData++ != spi_rcv_data) { UartPuts("spi error\n\r"); while(1); //stop } SPSTAT = 0xC0; //clear flag bits SPDAT=val2&0x7f; //slave spi send val2=val2+1; } } 用从机中断方式 没有中断上来 也就是没打印 UartPuts("SPI INTERRUPT COMING!!!!\n\r"); 已经打开全局中断使能了EA = 1 void SpiInit(void) { P2M1 = 0x00; P2M2 = 0x2c; SPCTL = 0x48; SPSTAT = 0xc0; //clear spi status flag bits ESPI = 1; } void SpiInterruptHandler(void) interrupt 14 { unsigned CHAR val2 = 0x55; unsigned CHAR spi_rcv_data = 0; unsigned CHAR asciival; UartPuts("SPI INTERRUPT COMING!!!!\n\r"); //while((SPSTAT & 0x80)==0); //wait for SPIF ==1 spi_rcv_data = SPDAT; //if == 1 read SPDAT #ifdef __SPI_DEBUG__ ConvertByte(spi_rcv_data,&asciival); //convert hex to ascii UartPuts(&asciival);UartPuts("\n\r"); #endif if (gSpiRcvData++ != spi_rcv_data) { UartPuts("spi error\n\r"); while(1); //stop } SPSTAT = 0xC0; //clear flag bits SPDAT=val2&0x7f; //slave spi send val2=val2+1; } |
2楼: | >>参与讨论 |
作者: zlg900 于 2005/11/18 17:23:00 发布:
中断号错误,这样的错误以后要尽量避免! |
3楼: | >>参与讨论 |
作者: sinhwa 于 2005/11/18 17:36:00 发布:
是lpc931 931的spi不是interrupt 14吗? |
4楼: | >>参与讨论 |
作者: zlg900 于 2005/11/19 9:15:00 发布:
不管是LPC931还是LPC932,其SPI中断向量都是同一个地址, 因此其都是同一个中断号 |
5楼: | >>参与讨论 |
作者: sinhwa 于 2005/11/19 10:39:00 发布:
弱问一下 你说的中断号是指那个 interrupt 14吗?文档上写的spi是interrupt啊。 |
6楼: | >>参与讨论 |
作者: sinhwa 于 2005/11/19 14:14:00 发布:
补充 文档上写的spi是interrupt 14啊。 P89LPC930_931_user_cn.pdf page 11(总共71页的) 我理解的中断号就是第11页写的,不知道我理解的是不是对的。 |
7楼: | >>参与讨论 |
作者: zlg900 于 2005/11/20 20:42:00 发布:
re 你理解错了, 中断号是由中断向量决定的, 中断向量 中断号 0003H 0 000BH 1 0013H 2 001BH 3 .... ... ... 0043H ????? 你自己数吧 如果不懂,去翻翻51教程吧, |
8楼: | >>参与讨论 |
作者: sinhwa 于 2005/11/21 13:57:00 发布:
OK了 OK了,谢谢 |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |