查看: 3951|回复: 7

[MPC] MPC56xx系列LIN总线中产生Tx帧的相关问题

[复制链接]

该用户从未签到

8

主题

52

帖子

0

中级会员

Rank: 3Rank: 3

积分
240
最后登录
2016-10-20
发表于 2015-9-17 09:43:58 | 显示全部楼层 |阅读模式
本帖最后由 plabghhahacong1988 于 2015-9-17 14:55 编辑

我正在学习MPC5634,目前看芯片数据手册上介绍关于发送和接收LIN帧章节时,有一点疑问:

26.4.2.6 LIN transmit register (SCI_LTR)的结构:
       0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15
     |-------|-----------------------|-------------------------------|
     |Parity |                  ID   |              LEN              |
     |-------|-----------------------|-------------------------------|
Reset| 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 |

      16   17  18  19  20  21  22  23  24  25  26  27  28  29  30  31
     |---|---|---|---|---------------|-------------------------------|
     |CSM|CSE|CRC|TD |       TO      |                    DATA       |
     |---|---|---|---|---------------|-------------------------------|
Reset| 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 |

26.5.6.3.1 Application controlled LIN TX frame generation (程序控制产生LIN Tx帧):
The first byte written to the SCI_LTR contains the Identifier and Identifier Parity fields. The second byte written defines the number of data bytes to be transmitted. The third write access defines the CRC and checksum generation. The TD bit has to set to 1 to invoke the TX frame generation. The TO field bits must be set to 0.
(写入SCI_LTR中的第一个字节包含id和奇偶标识段. 第二个写入的字节定义了发送数据的字节数. 第三次写操作定义了CRC和校验和的产生. TD位置1用于使能产生Tx帧. TO段必须设为0.)

如果我想设置ID = 0x35;     LEN = 8;     CSM = 1;     CSE = 1;     TD = 1;      SCI_LTR寄存器的所有其他字段均为0.
此处不考虑TXRDY标识位的状态该如何写SCI_LTR寄存器???
方式一:
ESCI_A.LTR.R = ((0x00000035<<24) | (0x00000008<<16) | (0x000000D0<<8));
方式二:
ESCI_A.LTR.R = 0x35;   //1st byte Write
ESCI_A.LTR.R = 0x05;   //2st byte Write
ESCI_A.LTR.R = 0xD0;  //3st byte Write

请问,哪种写SCI_LTR寄存器的方式是正确的?
根据该寄存器的结构, 我认为第一种方式是正确的,但是根据芯片数据手册中的描述(26.5.6.3.1),感觉第二种方式是正确的。求大神指教,谢谢。
我知道答案 目前已有7人回答
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2015-9-17 14:36:23 | 显示全部楼层
    不好意思,我对LIN使用比较少。从手册上的描述应该是先发送ID等头,然后接着发送数据。那么,方法二应该是正确的流程,但是数据写的不对,0x35同样需要左移24位。可以参考下面DMA的传输过程。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8

    主题

    52

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    240
    最后登录
    2016-10-20
     楼主| 发表于 2015-9-17 14:49:14 | 显示全部楼层
    本帖最后由 plabghhahacong1988 于 2015-9-17 14:52 编辑
    安 发表于 2015-9-17 14:36
    不好意思,我对LIN使用比较少。从手册上的描述应该是先发送ID等头,然后接着发送数据。那么,方法二应该是 ...

    我觉得使用dma方式时,ID之类的字段是不可能人为左移24位的。
    因为dma的目的地址DADDR是SCI_LTR寄存器的首地址,起始地址SADDR是一个unsigned char型的数组首地址.其中该数组前三位字节元素是id、len、crc等帧头信息(如:方式二中三次写入时的数据0x35、0x08、0xD0)。第三个字节元素后面的其他元素全是数据字节。
    我现在的问题是如果我第二种方式写的不对,那么通过dma方式的时候,前三个字节元素是如何被dma传到SCI_LTR寄存器的相关字段上的?难道是dma帮忙实现的左移位(<<)操作???

    DMA控制Tx帧的产生

    DMA控制Tx帧的产生
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2015-9-17 16:05:06 | 显示全部楼层
    从结构来看,是不用左移,直接发送数据到DMA缓冲区。eSCI会自动转换为LIN格式传输数据。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8

    主题

    52

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    240
    最后登录
    2016-10-20
     楼主| 发表于 2015-9-17 17:03:21 | 显示全部楼层
    安 发表于 2015-9-17 16:05
    从结构来看,是不用左移,直接发送数据到DMA缓冲区。eSCI会自动转换为LIN格式传输数据。 ...

    对,我也是这么理解的。
    所以我也倾向于第二种方式是正确的写SCI_LTR的方式。
    并且我觉得,就算不通过dma方式,而是通过应用程序控制Tx帧的产生,也不用左移数据0x35/0x08/0xD0.
    不知道安版主,你怎么看?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2015-9-18 08:46:55 | 显示全部楼层
    这个可以测试看看。有没有LIN接收工具?或者自测也行。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8

    主题

    52

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    240
    最后登录
    2016-10-20
     楼主| 发表于 2015-9-18 08:57:36 | 显示全部楼层
    本帖最后由 plabghhahacong1988 于 2015-9-18 09:05 编辑
    安 发表于 2015-9-18 08:46
    这个可以测试看看。有没有LIN接收工具?或者自测也行。

    我就是因为没有lin的自测工具,也没有示波器。
    所以很麻烦。
    我现在的mpc5634M芯片上,lin节点只能作为master节点。
    我想把芯片上两个lin接口相连,其中两个接口的LIN与LIN相连,GND与GND相连。
    然后模拟lin总线收发包:LIN_A发包,LIN_B收包。
    不知道能不能行?个人觉得应该不行,LIN_A和LIN_B都只能作为master节点,估计LIN_A可以发出报文,但是LIN_B肯定收不到包。

    芯片数据手册上,关于应用程序控制产生Rx帧的章节中,描述如下:
    The first byte written to the SCI_LTR contains the Identifier and Identifier Parity fields. The second byte written defines the number of data bytes requested from the LIN slave. The third write access defines the CRC and checksum checking. The TD bit has to be set to 0 to invoke the RX frame generation. The TO field defines the upper part of the timeout value. The fourth byte written defines the lower part of the timeout value.
    After the fourth byte is written the generation of a LIN RX frame starts. Firstly, a break field is transmitted, then the synch field and the protected identifier field. After the transmission of the protected identifier, the eSCI module starts to receive the frame data transmitted by the LIN slave. When the module has received a complete byte field, the received data is transferred into the LIN receive register (SCI_LRR) and the receive data ready flag RXRDY in the SR register (SCI_SR) is set.
    (写入SCI_LTR中的第一个字节包含id和奇偶标识段. 第二个写入的字节定义了LIN从机请求的数据字节数. 第三次写操作定义了CRC和校验和检测. TD位置0用于使能产生Rx帧. TO段是超时值的高位部分,第四个写入的字节是超时值的低位部分.
    第四个字节写入以后,LIN Rx帧开始产生. 首先发送分隔字段,然后发送同步字段和受保护的ID字段. 受保护的id段发送完成后,eSCI模块开始接受LIN从机发送的帧数据. 当模块接收了完整的字节段后,该数据会被转移到LIN接收寄存器(SCI_LRR)中,同时寄存器SCI_SR中的RXRDY标志位置1.)

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2015-9-18 11:35:41 | 显示全部楼层
    可以。我没仔细看手册,你看看有没有配置完自测功能的。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-13 19:15 , Processed in 0.107120 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表