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.

[参考译文] MSP430FR5994:提高 DS1620+温度传感器的读取速度

Guru**** 2581345 points
Other Parts Discussed in Thread: MSP430FR5994

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/613487/msp430fr5994-increasing-read-speed-from-a-ds1620-temperature-sensor

器件型号:MSP430FR5994

大家好

我有一个 MSP430FR5994 Launchpad、正在集成 Maxim Integrated 的 DS1620+温度传感器。 我目前是位拆裂(不支持 I2C 或 SPI、没有额外的硬件)、以初始化传感器以进行连续转换、然后在无限循环中写入"读取温度"命令。 我正在切换一个引脚以检查示波器上的速度。 仅写入"rese"命令时、以40kHz 的速率发生。 当我实际存储数据时、这会降至10kHz、当我预期数据达到~20kHz 时(写入8位命令、读取9位数据)。 是否有人知道这种情况的原因? 速度是该项目的关键因素、因此我需要尽可能快地完成该项目。

我已经注意到、传感器的数据表指出最大时钟频率为1.75MHz、这可能是一个因素吗(尽管我不会想到、因为我没有达到这些速度)?

此外、我已将主时钟设置为8MHz、但当我将该频率加倍至16MHz 时、速度大约为一半(存储数据时、速度低于5kHz)。 我无法理解这种情况的原因、因为在另一程序中使用 SD 卡时也会发生这种情况。 我已经注意到、FRAM 只能以8MHz 的最大速度运行、在这些情况下是否会发生类似的情况?

我在下面附加了无限循环、并具有数据存储。

while (1){

//---- 开始交谈--- //

P4OUT = 0x08;//CLK 高电平

P2OUT = 0x20;// RST 高电平有效

//发送'Read temp'命令(0b 1010、LSB 优先)

P4OUT = 0x08;
P4OUT = 0x00;
P4OUT = 0x08;

P4OUT = 0x0C;
P4OUT = 0x04;
P4OUT = 0x0C;

P4OUT = 0x08;
P4OUT = 0x00;
P4OUT = 0x08;

P4OUT = 0x0C;
P4OUT = 0x04;
P4OUT = 0x0C;

P4OUT = 0x08;
P4OUT = 0x00;
P4OUT = 0x08;

P4OUT = 0x0C;
P4OUT = 0x04;
P4OUT = 0x0C;

P4OUT = 0x08;
P4OUT = 0x00;
P4OUT = 0x08;

P4OUT = 0x0C;
P4OUT = 0x04;
P4OUT = 0x0C;

//---- 开始读数--- //

P4DIR = 0x08;//将 P4.2 (DQ)设置为输入

//收集位
对于(n=0;n<9;n++){
P4OUT = P4IN & 0xF7;
INT STATUS = P4IN & 0x04;

if (status =0x04){
RawData[n]= 1;
}
如果(status == 0x00){
RawData[n]= 0;
}
P4OUT = P4IN | 0x08;
}

P4DIR = 0x0C;//将 P4.2 (DQ)设置为输出

P2OUT = 0x00;// RST 低电平

//---- 停止交谈--- //

P8OUT ^= 0x02;//切换示波器引脚
} 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我忘记了说、我按如下方式连接了传感器:

    P2.5 - RST
    P4.3 - CLK
    P4.2 -常见问题
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、JSud、
    您将数据保存在何处? 是否将温度数据保存到 FRAM 或 SD 卡中?

    如果要将系统设置为16MHz、则必须在设置时钟系统之前在代码中添加一行。
    //根据 MCLK 的器件数据表的要求配置一个 FRAM 等待状态
    //在配置时钟系统之前在8MHz 以上运行。
    FRCTL0 = FRCTLPW | NWAITS_1;

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

    感谢您的回复、在将主时钟设置为16MHz (而以前为~5kHz)时、通过实施您提供的线路、系统可以在10kHz 时进入读取周期。

    不幸的是,这仍然比所需速度慢。 您认为这可能是我使用的传感器固有的吗? 如果情况如此,我可能需要研究其他办法。

    再次感谢你

    JSud
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、JSud、
    我会反汇编您的代码、它需要大约440个时钟周期来完成读取命令和存储命令。 这意味着、如果系统时钟为8MHz、您的周期频率应约为18.2kHz。 但您得到的是10kHz。 因此、我认为传感器可能是边界。

    此致、
    现金 Hao