TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F28034: 当作为主机时,如何请求从机数据

Part Number:TMS320F28034Other Parts Discussed in Thread: C2000WARE

请问,当作为主机时,请求从机数据的指令值什么或者设置是什么?

Yale Li:

您好,您使用的是什么通信模块?

,

? ?:

TMS320F28034 + LIN收发器

,

? ?:

我现在通过设置LINID和LINTD0/LINTD1可以发送主机的报文数据,但是我如何请求从机报文呢?是要修改LINID?还是通过LINTD0/LINTD1发送一些请求指令?

,

Yale Li:

我向资深工程师询问后回复您

,

Yale Li:

请您看一下如下路径的C2000ware示例:C:\ti\c2000\C2000Ware_version\device_support\f2803x\examples\c28\lina_external_loopback

通常来说,您需要向头部写入正确的ID。所有的从节点都将会收到消息,但是只有和ID匹配的从节点才会响应。

,

? ?:

头部ID是在哪里写入,LINID还是其他地方

,

? ?:

例程中并没有给出相应的写入方法,麻烦告知一下

,

Yale Li:

是LINID。我们在上面提供给您的LIN例程中,演示了如何写入LINID寄存器,以及如何配置RXIDMASK/TXIDMASK:

//// LIN MASK Configuration 2//LinaRegs.LINMASK.bit.RXIDMASK = RXID_MASK;	// 0xALinaRegs.LINMASK.bit.TXIDMASK = TXID_MASK;	// 0xA//// Initialize the Slave LINIDNUM register//LinaRegs.LINID.bit.IDSLAVETASKBYTE = LINIDNUM_Slave;// 0x30//// Release	SCI from software reset state - End of Config//LinaRegs.SCIGCR1.bit.SWnRST = 1;//// LIN Response Length//LinaRegs.SCIFORMAT.bit.LENGTH = RESP_LENGTH;for(i=0;i<8;i++){//// Transmit Data - This populates the LIN transmit// buffers - no data is actually sent yet.//LinaRegs.LINTD0.all = *Tx_DataPtr++;LinaRegs.LINTD1.all = *Tx_DataPtr++;//// Send ID by writing to LINIDNUM register// This causes the ID to be written to the bus.In turn,// this causes both TX and RX ID matches in the slave task// to occur - causing the data in the transmit buffers to// be placed on the bus and also read into the receive buffers//LinaRegs.LINID.bit.IDBYTE = LIN_ID;// 0x3A

,

? ?:

你好,我现在可以正确的发送我的报头,但是从机与之匹配的信息并没有发出来,除了要设置LINID(PID),还需要设置别的吗?

,

? ?:

我还有另一个疑问,请问2803x作为主机,发送报文时,假设0x01时主机的控制报文(假设没有数据,空),0x02时请求从机数据的报文,在发送报文头的时候,怎么去判断这个报文头是主机控制报文还是请求数据的报文呢,毕竟这个报文头的赋值方式都是将PID写入LINID中?

,

Yale Li:

您是如何设置 IDSLAVETASKBYTE的?这也是需要的,以便从设备知道 LIN 节点是否需要执行 RX 响应、TX 响应或不执行任何操作。

,

? ?:

谢谢,你的回答,我之前是设置时帧间隙太短了,从机还有响应就发下一帧了

,

Yale Li:

不客气,也很感谢您的分享

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28034: 当作为主机时,如何请求从机数据
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1