CS8900A自身用IRQ0输出中断,接2410的EINT8。我用H-JTAG + WIGGLER调试。
CS8900A的初始化设置(用MEMORY MODE访问):
LINE_CTL &= ~(AUI_ONLY | AUI_AUTO); INDI_ADDR56 = 0x0506; //MAC 01-02-03-04-05-06 INDI_ADDR34 = 0x0304; INDI_ADDR12 = 0x0102; RX_CTL |= (RX_OK_A | INDI_ADR_A | PROMISCUOUS_A | BROADCAST_A); RX_CFG |= (RX_OK_IE | BUFFER_CRC); BUF_CFG |= (RX_MISS_IE); LINE_CTL |= (SER_RX_ON | SER_TX_ON); INTCH = 0x0000; //use IRQ0 BUS_CTL |= (ENABLE_IRQ);
2410关于中断的设置:
GPGCON = 0x55555556; //select EINT8 for cs8900a EXTINT1 = 0x22222221; //cs8900a irq active high EINTMASK &= ~(1 << 8); INTMSK &= ~(INT_TIMER4 | INT_UART0 | INT_EINT8_23); //enable timer4 ,uart0 ,eint8 irq INTSUBMSK &= ~(INT_RXD0);
已经确认的情况: 1. 定时器4和串口0的中断是正常的。 2. 用查询方式可以查询到CS8900A的ID:630E,可以正确接收完整的以太网帧。 3. 如果将CS8900A的中断输出改为IRQ1,即等于将2410的EINT8悬空,那么EINT8的外中断处理被频繁触发。 4. 将EINT8的管脚GPG0设置为GPIO输入,并不断读取该管脚的电平,始终为低。(我没有示波器)
我的问题是:为什么不能通过外部中断接收CS8900A的数据?我认为是CS8900A不产生中断。
各位请指教。
|