[此贴子已经被作者于2007-5-2 13:51:20编辑过]
谢谢斑竹^^ 我看过13192的参考手册了,这2个code bytes确实应该丢弃。但我想不通中断函数IRQIsr()在做接收的那部分代码里,为什么经过CRC校验、判断Packet长度是否合法这两步以后,会有这几句话来判断Code byte:
/* Test the Byte Codes */
if (gsPhyOptions.Bits.u1PromiscuousMode == 0)
{
u16Temp = SPIDrvRead2(RX_PKT); /* Get the code bytes */
if ((u16Temp != 0xFF7E) && ((gsPhyOptions.Bits.u1PromiscuousMode == FALSE)))
{
/* Read the MC13192 trx register. Timer trigger off. */
u16StatusContent = (SPIDrvRead(MODE_ADDR) & 0xFF7F);
/* Update the trx register. */
SPIDrvWrite(MODE_ADDR, u16StatusContent);
/* Forces the MC13192 to enter the receive mode. */
RTXENAssert();
return;
}
}
/* A valid packet has been received. */
gu8RTxMode = IDLE_MODE; /* Set the rtx_state to idle */
SPIDrvWrite(T1_HI_ADDR, 0x8000); /*
* Disables TC1 and clears the
* IRQ.
*/
SPIDrvWrite(T1_LO_ADDR, 0x0000);
psDrvRxPacket->u8DataLength = u8DataLength;
psDrvRxPacket->u8Status = SUCCESS;
PDDataIndication(); /* Notify PHY that there is data available. */
return;
根据程序里的注释,经过/* Test the Byte Codes */这一步以后才能认为接到了合法的packet,也就是说这2个code bytes必须要是 0xFF7E 才行?
我调程序的时候,之前的CRC校验、Packet长度判断都已经通过了,只是这个Test the Byte Codes 过不去,我收到的code bytes不是 0xFF7E,所以无法执行/* A valid packet has been received. */之后的程序。所以觉得很奇怪。。
[此贴子已经被作者于2007-5-9 14:51:43编辑过]
[此贴子已经被作者于2007-5-9 14:56:39编辑过]
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |