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.

[参考译文] MSP430FR2633:Captouch 库 I2C 寄存器模式缓冲区大小

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1477285/msp430fr2633-captouch-library-i2c-register-mode-buffer-sizing

器件型号:MSP430FR2633

工具与软件:

您好!

我有一位客户希望在 I2C 寄存器模式下使用 CapTIvate 库、他对我们希望了解的受支持消息格式和支持长度有一些疑问?

在寄存器模式下、软件库是否支持通用数据包? 在该运行模式下、它似乎没有被引用。

关于通用数据包的另一个问题是、极具吸引力的技术指南提示通用数据包的最大长度为58字节、但在代码中、我看到 I2C 发送缓冲区的最大长度为32字节、然后在其他地方、我看到 TX 乒乓缓冲区设置为48字节。 通用数据包的最大长度是多少?

最后一个问题是在寄存器模式下、对于一个周期数据包、固件是否支持在一个周期数据包中发送所有12个通道的数据? 同样、由于 I2C TX 缓冲区是32个字节、不支持12 * 4字节的数据+数据包标头。

Munan

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

    尊敬的 Munan:

    这些问题真的很好。  我必须深挖才能找到一些答案。  我将在明天星期五结束前看到我能找到的内容。

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

    尊敬的 Munan:

    我很抱歉没有像承诺的那样回复您。

    在寄存器模式下、库是否支持通用数据包? 在该操作模式中似乎没有引用它。

    请访问: https://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/CapTIvate_Design_Center 454.latest/exports/docs/users_guide/html/Captt Ivate_Technology_Guide_ 404.markdown/ch_library.html#format-general-purpose-packets

    [引用 userid="280113" url="~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1477285/msp430fr2633-captouch-library-i2c-register-mode-buffer-sizing 关于通用数据包的另一个问题是、CapTIvate 技术指南表明通用数据包的最大长度为58字节、但在代码中、我看到 I2C 传输缓冲区上限为32字节、然后在其他地方我看到 TX 乒乓缓冲区设置为48字节。 通用数据包的最大长度是多少?[/QUOT]

    通用协议设计用于通过 USB 将数据从 MSP430发送到 GUI。  USB 数据包中的最大字节数为64字节。 如果一次可以发送64个或更少字节、则由于 USB 数据包开销、这样更有效。  现在、不确定为什么58字节是最大字节数。 通用协议数据包中有2个字节+数据字节。  因此、64 - 2会在通用数据包中留下62个字节可用于发送、而不是58。 因此、我怀疑 USB 数据包中用于 CRC 或其他任务的额外字节会被占用。  我不是 USB 专家。

    最后一个问题是寄存器模式、对于周期数据包、固件是否支持在一个周期数据包中发送所有12个通道数据? 同样、由于 I2C TX 缓冲区是32个字节、不支持12 * 4字节数据+数据包标头。

    CapTIvate IP 的当前实现最多支持每个周期最多4个元素。  这个数字来自 IP 中测量块的数量、并且由于每个周期只测量1个引脚(= 1个元件)、最大元件数量为4。  现在、IP 设计为每个周期支持多达12个元素、这表明 IP 可以支持多达12个测量块。  但是、在开发4个以上测量块之后、没有一个超出当前系列的 MSP430。

    现在、对于周期数据包、最大字节大小为(3cmd + 3state + 16data)= 22字节、最大可能的字节。  在文件 CAPT_comm_config.h 中、TX 缓冲区为48个字节。  如下所述、采用乒乓缓冲方案、即2 x 24。  这意味着缓冲区比需要的大2个字节、我怀疑这是为了满足进一步需要向数据包中添加2个字节。

    //*****************************************************************************
    //
    //! def CAPT_TRANSMIT_BUFFER_SIZE defines the size of the transmit buffer.
    //! Note that 2x this size will be allocated, since ping-pong buffering is
    //! used.  This should be at least 2x the size of the largest packet, to allow
    //! for byte stuffing.
    //
    //*****************************************************************************
    #define CAPT_TRANSMIT_BUFFER_SIZE			(48)
    
    //*****************************************************************************
    //
    //! def CAPT_QUEUE_BUFFER_SIZE defines the size of the receive queue buffer.
    //
    //*****************************************************************************
    #define CAPT_QUEUE_BUFFER_SIZE				(256)
    
    //*****************************************************************************
    //
    //! def CAPT_REGISTER_I2C_BUFFER_SIZE defines the size of the I2C Rx buffer.
    //
    //*****************************************************************************
    #define CAPT_I2C_RECEIVE_BUFFER_SIZE		(32)
    
    //*****************************************************************************
    //
    //! def CAPT_I2C_REGISTER_RW_BUFFER_SIZE defines the size of the I2C
    //! register mode working buffer.
    //
    //*****************************************************************************
    #define CAPT_I2C_REGISTER_RW_BUFFER_SIZE	(32)