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.

[参考译文] TMS570LS3137:WCAP 指令澄清

Guru**** 2482105 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/710556/tms570ls3137-wcap-instruction-clarification

器件型号:TMS570LS3137

你(们)好。

我对 N2HET WCAP 指令的配置和使用有点困惑。

假设以下代码段是否合理?

L00 CNT {NEX=L01、ANGAL_COUNT=OFF、REG=A、COMP=EQ、IRQ= OFF、 max=0x01FFFFFF、data=0}
L01 WCAP{NEX=L02、reg =A、PIN=CC23、IRQ=ON、EVENT=RISE、 HR_LR=HIGH、DATA=0}
L02 WCAP{NEX=L00、REG=A、PIN=CC24、IRQ=ON、EVENT=RISE、 HR_LR=HIGH、DATA=0}

边沿检测时、25位+位 WCAP 数据字段(DF)将存储什么值?  

REG=A (25位)是要写入 WCAP DF 的源寄存器、还是"data=0"指定的0?

是否使用了 REG=S (32位)、WCAP DF 何时会发生?

谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好、Chuck、

    在边沿发生的循环之后的循环中、WCAP 的数据字段被更新。 df= Rega 的值(出现上升沿)+ 1;
    2.是的,Reg A 是源
    3.注册表 S 的值将写入 DF
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 QJ、

    当 DATA= x 将在 WCAP 指令中使用时?

    与代码中一样、除了25位捕捉值外、我们还需要使用 HR 数据。 您能告诉我这是如何工作的、是从25位捕获值中添加还是减去 HR 数据? 在 RM 中、我可以在哪里找到此信息?

    谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Chuck、

    WCAP 指令中的 DATA=x 不被使用、并且在捕获条件发生后、被下一个环路中所选寄存器的值覆盖。

    如果要使用 HR 数据、请配置 hr_lr=0 (高电平)。 当捕获条件为真时、HR 寄存器的值将被捕获到 HR 数据字段。

    例如:

    HETPFR_register = 0x0200 -> LR = 4、hr = 1、ts = 4

    N2HET 计划:

    l00 CNT{reg=a、max=01ffffffh}
    L01 WCAP{NEX=L00、COND_ADDR=L00、hr_LR=HIGH、REG=A、EVENT= FALL、 PIN=0、 DATA=0}

    在引脚0下降沿、捕获 HR 计数器(2)、该值将写入 HR 数据字段。 下一个循环中寄存器 A (4)的值将写入数据文件(25位)。 由于 LR=4、只有 HR 字段的位6和位5有效、因此 bit[6:5]=B10 (2个 HR 时钟)--> HR 字段为[6:0]=b1000000 (共7位)

    32位数据文件=(25位数据<< 7)| HR 字段(4 << 7)|(b1000000)= B10_0100_0000 = 0x240

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢 QJ 提供的信息、

    [引用用户="QJ Wang "]

    32位数据文件=(25位数据<< 7)| HR 字段(4 << 7)|(b1000000)= B10_0100_0000 = 0x240 

    [/报价]

    它不是像这样吗?

    32位数据文件=(25位数据<< 7)| HR 字段= B10_0100_0000 = 0x240 

    不想争辩、但我有一种倾向认为边缘发生在 A=3和 A=4之间、所以  

    32位数据文件=((25位数据-1)<< 7)| HR 字段= B01_1100_0000 = 0x1C0 

    我缺少什么吗? 我理解它不会产生任何差异,因为只要公式用于所有计数...

    此致。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好、Chuck、

    你是对的。 这是我在午夜的拼写错误。
    32位数据文件=(25位数据<< 7)| HR 字段= B10_0100_0000 = 0x240

    如果边沿发生在 WCAP 执行之前、3被捕捉到数据字段。 否则、下一个环路中的下一个 WCAP 将捕获4。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢!

    只是一个一般性问题:是否可以独立于同一个 N2HET 执行两个不同的代码段(以减少 LR 环路时间)、或者我需要在每个代码段中使用 N2HET1和 N2HET2来执行2条指令?

    此致。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好、Chuck、

    指令依次执行。 到达末尾后、程序返回到第一条指令。 不能在一个 N2HET 模块中并行运行两组代码。