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.

[参考译文] MSPM0G3507:【错误报告】MSPM0G3507:将 PA15 配置为 GPIO 会导致 SPI1 停止工作

Guru**** 2803255 points

Other Parts Discussed in Thread: MSPM0G3507, SYSCONFIG, LP-MSPM0G3507, BOOSTXL-DRV8323RS

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1615566/mspm0g3507-bug-report-mspm0g3507-configuring-pa15-as-gpio-causes-spi1-to-stop-working

器件型号: MSPM0G3507
Thread 中讨论的其他器件: sysconfigBOOSTXL-DRV8323RS

#【错误报告】MSPM0G3507:将 PA15 配置为 GPIO 会导致 SPI1 停止工作

##摘要

在 SysConfig 中将**PA15 配置为 GPIO**时、** SPI1 停止正常运行**、即使 PA15 没有直接分配给任何 SPI1 信号也是如此。 这似乎是 SysConfig 内部资源管理中的一个错误。

##环境

-** MCU**:MSPM0G3507
-**电路板**:LP-MSPM0G3507 (LaunchPad)
-** BoosterPack**:BOOSTXL-DRV8323RS(堆叠在 LaunchPad 上)
-** IDE**:CCS Theia
-** SDK 版本**:(请指定您的版本)
-** SysConfig 版本**:(请指定您的版本)

##重要说明:BOOSTXL-DRV8323RS 连接

** BOOSTXL-DRV8323RS BoosterPack 在 LP-MSPM0G3507 上堆叠时、会重现此问题。**

BOOSTXL-DRV8323RS 影响此行为的确切原因目前未知、但这是重现此问题的关键条件。

### BOOSTXL-DRV8323RS 引脚使用(参考)

根据 BOOSTXL-DRV8323RS 用户指南 (SLVUB01C):

| J3/J4 引脚|功能 |说明              |
|----- |----- |---------------------------------------- |
| J3.13  | SCLK   | SPI CLK                |
| J4.12  | SDI   | SPI MOSI(DRV832xx 的数据输入)  |
| J4.14  | SDO   | SPI MISO(DRV832xx 的数据输出)|
| J4.18  | NSCS/GAIN | SPI 芯片选择            |

**注意**:PA15 对应于 LP-MSPM0G3507 上的 J3.30、BOOSTXL-DRV8323RS 不直接在其引脚表中使用该引脚。 但是、如果存在此 BoosterPack、则问题发生似乎是必需的。

##问题描述

###当前 SPI1 配置(工作)

```javascript
//.syscfg 文件中的 SPI1 引脚分配
SPI1.peripheral.sclkPin.$assign =“BoosterPack.7";“; // PA12
SPI1.peripheral.mosiPin.$assign =“BoosterPack.15";“; // PB8
SPI1.peripheral.misoPin.$assign =“BoosterPack.14";“; // PB7
SPI1.peripheral.cs2Pin.$assign =“BoosterPack.12";“; // PB0
```μ s

**注意**:`BoosterPack.15`对应于**PB8**、而不是 PA15(由 LaunchPad 用户指南图 2-10 确认)。

要重现的###步骤

1.创建有效的 SPI1 配置、如上所示
2.将以下 GPIO 配置添加到.syscfg 文件:

```javascript
GPIO1.associatedPins.create (2);
GPIO1.associatedPins[1].$name    =“USER_TEST";“;
gpio1.associatedPins[1].initialValue =“set";“;
GPIO1.associatedPins[1].pin.$assign =“PA15";“;
```μ s

3.构建并刷写项目
4.**结果**:SPI1 通信失败

预期行为###

- PA15 配置为 GPIO 不应影响 SPI1 操作
- SPI1 正在使用 PB8 (MOSI)、PB7 (MISO)、PA12 (SCLK)、PB0 (CS2)
- PA15 未分配给任何 SPI1 信号

###实际行为

-当 PA15 被配置为 GPIO 时,SPI1 停止工作
-删除 PA15 GPIO 配置会恢复 SPI1 功能

##调查结果

#### PA15 备选函数(来自数据表表表 6-2)

PA15 (PINCM37) 具有以下数字交替功能:

- UART0_RTS [UART0=2] PF
-** SPI1_CS2 [CS2=3]** PF←关键点
- I2C1_SCL [I2C1=4] PF
- TIMA1_C0 [TIMA1=5] PF
- TIMG8_IDX [TIMG8=6] PF
- TIMA1_C0N [TIMA1=7] PF
- TIMA0_C2 [TIMA0=8] PF

###键观察

- PA15 列为 SPI1_CS2**的**备用引脚
-然而,在我的配置中,SPI1_CS2 被明确分配给**PB0**(`BoosterPack.12`)
*** PA15 没有直接分配给 CS2 或任何其他 SPI1 功能**

###疑似根本原因

SysConfig 似乎存在内部资源管理问题、其中:

当 PA15 配置为 GPIO 时、SysConfig 会检测到 PA15 将 SPI1_CS2 用作替代功能
2.即使 SPI1_CS2 明确分配给 PB0、SysConfig 也会错误地处理 PA15 配置
3、这会导致对 SPI1 外设配置进行意外的更改

###相关的已知问题

从** MSPM0 SDK 已知问题和常见问题解答**开始:

>选择能够同时在同一引脚上工作的模拟外设输入/输出时, SysConfig 将显示资源冲突错误。
>
>解决方法:选择所需的特定引脚(不要保留为“任何“),然后选择忽略错误的选项。

该问题记录下来会影响模拟外设、但数字外设 (SPI) 上可能会发生类似的资源冲突。

##引脚映射基准

| BoosterPack 引脚| MCU 引脚| Project 中的功能|
|------------ |----- |---------------------- |
| BoosterPack.7 | PA12  | SPI1_SCLK      |
| BoosterPack.14 | PB7  | SPI1_POCI (MISO)  |
| BoosterPack.15 | PB8  | SPI1_PICO (MOSI)  |
| BoosterPack.12 | PB0  | SPI1_CS2       |
| BoosterPack.30 | PA15  |(尝试 GPIO) |

##问题

1.这是 SysConfig SPI 芯片选择备用引脚的资源管理中的已知问题吗?
2.是否有权变措施可以在将 SPI1_CS2 保持在 PB0 上的同时使用 PA15 作为 GPIO?
3. TI 能否确认这是否是将在未来的 SDK/SysConfig 版本中修复的错误?

##解决方法请求

请告知是否有任何解决方法:

-使用 PA15 作为 GPIO
-在 PB0 上保持带有 CS2 的 SPI1

##附件

-.syscfg 文件(可按需提供)
-生成的 ti_msp_dl_config.h/c 文件显示问题(可应要求提供)

——

**感谢您调查此问题

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

    根据 SLVC690.ZIP 中的原理图、LaunchPad PA15 引脚对应于连接到 VDS 的 J3.20。 将 PA15 设置为高电平可能会导致 VDS_OCP 故障。

    如何确定 SPI 停止工作?

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

    谢谢~ Bruce McKenney 

    我同意 Bruce 的看法、请参阅 DRV 的数据表: https://www.ti.com/lit/ds/symlink/drv8323.pdf

    8.3.1.4.4 MOSFET VDS 监测器

    此外、器件错误 通常无需任何其他器件即可验证。 例如在 LaunchPad 上进行测试、并通过注入一些错误信号来验证 SPI 通信本身。

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

    您好 Bruce、

    感谢您的答复。 我进一步调查并找到了实际的根本原因。

    物理检查 BOOSTXL-DRV8323RS 板后、我发现** J3.20 (VDS) 连接到板上的 SCLK**。

    这是合理的、因为该电路板支持这两种型号:
    - DRV8323H(硬件版本):引脚 20 = VDS
    - DRV8323S(SPI 版本):引脚 20 = SCLK

    因此、当我将 PA15(对应于 J3.20)设置为 GPIO 高电平时、实际上是**将 SCLK 线路拉高**、这阻止了 SPI 通信正常工作、而不是最初怀疑的 VDS_OCP 故障。

    这解释了为什么:
    1.仅连接 BOOSTXL-DRV8323RS 时出现问题
    2. SPI 通信完全失败(不仅仅是故障情况)
    3.删除 PA15 GPIO 配置后恢复了 SPI 功能

    我最初想将 PA15 用于 DAC 输出(调试示波器监控)、假设 DRV8323RS(SPI 版本)上不使用 VDS。 现在我知道、当连接 BOOSTXL-DRV8323RS 时、PA15/J3.20 不能用于任何目的、因为它会干扰 SCLK。

    感谢您为我指出正确的方向。 您提到的 J3.20 让我亲自检查了电路板并找到了实际的连接。

    经验教训:始终验证实际电路板布线、而不仅仅是文档记录!

    此致

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

    您好 Bruce、

    感谢您的答复。 我进一步调查并找到了实际的根本原因。

    物理检查 BOOSTXL-DRV8323RS 板后、我发现** J3.20 (VDS) 连接到板上的 SCLK**。

    这是合理的、因为该电路板支持这两种型号:
    - DRV8323H(硬件版本):引脚 20 = VDS
    - DRV8323S(SPI 版本):引脚 20 = SCLK

    因此、当我将 PA15(对应于 J3.20)设置为 GPIO 高电平时、实际上是**将 SCLK 线路拉高**、这阻止了 SPI 通信正常工作、而不是最初怀疑的 VDS_OCP 故障。

    这解释了为什么:
    1.仅连接 BOOSTXL-DRV8323RS 时出现问题
    2. SPI 通信完全失败(不仅仅是故障情况)
    3.删除 PA15 GPIO 配置后恢复了 SPI 功能

    我最初想将 PA15 用于 DAC 输出(调试示波器监控)、假设 DRV8323RS(SPI 版本)上不使用 VDS。 现在我知道、当连接 BOOSTXL-DRV8323RS 时、PA15/J3.20 不能用于任何目的、因为它会干扰 SCLK。

    感谢您为我指出正确的方向。 您提到的 J3.20 让我亲自检查了电路板并找到了实际的连接。

    经验教训:始终验证实际电路板布线、而不仅仅是文档记录!

    此致