Other Parts Discussed in Thread: HALCOGEN,
本人想要测试lin的master和slave之间的通信:
lin1配置为master,lin2配置为slave,其余配置相同,lin1的tx与lin2的rx对接,lin1的rx与lin2的tx对接,在lin2接受到ID后,lin2发送数据作为responce,请问这样是否可以测试master与slave之间的通信?若不能应该怎样进行连线测试该模式?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
本人想要测试lin的master和slave之间的通信:
lin1配置为master,lin2配置为slave,其余配置相同,lin1的tx与lin2的rx对接,lin1的rx与lin2的tx对接,在lin2接受到ID后,lin2发送数据作为responce,请问这样是否可以测试master与slave之间的通信?若不能应该怎样进行连线测试该模式?
例程里面是自发自收的例子,例程功能测试正常;
初始化代码:
void linInit(void)
{
linREG1->GCR0 = 1U;
linREG1->GCR1 = 0U;
linREG1->GCR1 = 0x40U;
linREG1->GCR1|= 0x03000C40U
| (uint32)((uint32)1U << 12U)
| (uint32)((uint32)0U << 2U)
| (uint32)((uint32)1U << 5U); //master mode
linREG1->MBRSR = (uint32)3370U;
linREG1->BRS = (uint32)233U;
linREG1->MASK = ((uint32)((uint32)0xFFU << 16U) | (uint32)0xFFU);
linREG1->COMP = ((uint32)((uint32)(1U - 1U) << 8U) | ((uint32)13U - 13U));
linREG1->FORMAT = ((linREG1->FORMAT & 0xFFF8FFFFU) | (uint32)(((uint32)4U - 1U) << 16U));
linREG1->PIO0 = ((uint32)4U | (uint32)2U | (uint32)0U);
linREG1->PIO3 = ((uint32)4U | (uint32)0U | (uint32)0U);
linREG1->PIO1 = ((uint32)0U | (uint32)0U | (uint32)0U);
linREG1->PIO6 = ((uint32)0U | (uint32)0U | (uint32)0U);
linREG1->PIO7 = ((uint32)0U | (uint32)0U | (uint32)0U);
linREG1->PIO8 = ((uint32)4U | (uint32)2U | (uint32)1U);
linREG1->SETINTLVL = ((uint32)0x00000000U;
linREG1->SETINT = (uint32)0x00000200U;
linREG1->GCR1 |= 0x00000080U;
linREG2->GCR0 = 1U;
linREG2->GCR1 = 0U;
linREG2->GCR1 = 0x40U;
linREG2->GCR1 |= 0x03000C40U
| (uint32)((uint32)1U << 12U)
| (uint32)((uint32)0U << 2U)
| (uint32)((uint32)0U << 5U); //salve mode
linREG2->MBRSR = (uint32)3370U;
linREG2->BRS = (uint32)233U;
linREG2->MASK = ((uint32)((uint32)0xFFU << 16U) | (uint32)0xFFU);
linREG2->COMP = ((uint32)((uint32)(1U - 1U) << 8U) | ((uint32)13U - 13U));
linREG2->FORMAT = ((linREG2->FORMAT & 0xFFF8FFFFU) | (uint32)(((uint32)8U - 1U) << 16U));
linREG2->PIO0 = ((uint32)4U | (uint32)2U | (uint32)0U);
linREG2->PIO3 = ((uint32)0U | (uint32)0U | (uint32)0U);
linREG2->PIO1 = ((uint32)0U | (uint32)0U | (uint32)0U);
linREG2->PIO6 = ((uint32)0U | (uint32)0U | (uint32)0U);
linREG2->PIO7 = ((uint32)0U | (uint32)0U | (uint32)0U);
linREG2->PIO8 = ((uint32)4U | (uint32)2U | (uint32)1U);
linREG2->SETINTLVL = ((uint32)0x00000000U;
linREG2->SETINT = ((uint32)0x00002000U; // enable id int & rev IDint
linREG2->GCR1 |= 0x00000080U;
}
测试代码
linInit();
while((!(linIsTxReady(linREG1))) || (linREG1->FLR & 0x8U == 0x8U));
linSendHeader(linREG1,0x3); // master send frame header
salve接受到ID后,在中断函数中发送数据:
master发送的ID,slave 可以接受到,但是slave端数据发送不出去,示波器抓slave TX端,无数据波形输出;
master自回环和自发自收测试通过。
现在有一个疑问是:该开发板是否已经集成了收发器? 若无收发器,该测试方式肯定是有问题的。若需要收发器,应该适配那个型号的 收发器呢?