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.

[参考译文] MSP432P401R:SPI/Energia 问题。 在 Arduino 上运行良好

Guru**** 2587365 points
Other Parts Discussed in Thread: ENERGIA

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/570355/msp432p401r-problem-with-spi-energia-works-fine-on-arduino

器件型号:MSP432P401R
主题中讨论的其他器件:Energia

大家好、我一直在使用 Arduino 通过 SPI 闪存射频 SoC (Nordic nrf24LE1)、但我想迁移到 MSP4xx、但我的成功非常参差不齐。

  1. 除了将串行数据从 SoC 转发到 PC 之外、Arduino 的工作效果非常好;软件串行库会减少大量字节。 因为 MSP432有两个(4?) 真正的 UART、我想看看我是否可以使用它们。
  2. 只要我物理接触进入 SoC 的 Vcc 和 GND 引脚、我就可以让 SPI 代码与"红色"MSP432 Launchpad 配合使用。 使用旧款(绿色) MSP432 Launchpad 时、代码甚至不会太远。  
  3. 找不到一种使用 Energia 测试 MSP430的方法--我不断得到"SLite 版本6.2.1.1624   失败了:MSP430:初始化仿真器时出错:找不到 USB FET        正在配置调试器(首次启动可能需要几分钟时间)..."

任何想法都是值得欢迎的;我在港口度过了几乎一整天的时间,但没有成功。 最坏的情况是、我只需返回 Arduino 或获取另一个具有两个真正 UART 的版本。

欢迎所有建议!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好 您正在测试哪些器件? 除了绿色 launchpad (msp432 launchpad 仅提供红色和黑色)之外、您还提到了 MSP432和 MSP430。

    对于 msp432、您可以在此处找到 SPI 示例:

    github.com/.../examples

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

    我的意思是黑色 MSP432 LaunchPad --它看起来像深绿色。 我的器件已连接到 试验电路板 BoosterPack (如下所示)。 我已经将它们连接到红色和"黑色"MSP432s、但它们的性能有所不同。 代码如下。 任何指针都被赞赏。 代码与 Arduino nano 和 Arduino uno (均为中文)完美配合使用、但软件串行除外、这并不是很好。 只要我同时接触 VCC 和 GND (电容、功率尖峰?)、我就可以让代码与红色 MSP432一起工作。 对黑色 MSP432没有爱--它会卡在"擦除闪存..."上

    本课程包括:

    /*
    Programr.ino
    
    编程器,用于使用 Arduino 的 SPI 接口刷写 Nordic nRF24LE1 SOC 射频芯片。
    
    要写入闪存的数据是使用
    随附的 programr.pl perl 脚本从标准 SDCC 生成的 Intel Hex 格式文件中馈送的。 首先启动 Arduino 脚本、然后运行
    perl 脚本。
    
    上传时、确保串行端口速度设置为57600波特。
    
    版权所有(c) 2014 Dean 许可
    
    免费授予任何获得
    本软件和相关文档文件("软件")副本的人员、以在
    不受限制的情况下处理本软件、包括但不限于
    使用、复制、修改、合并、发布、 分发、从属许可和/或销售
    本软件的副本,并允许
    向其提供本软件的人员这样做,但须遵守以下条件:
    
    上述版权声明和本许可声明应包含在
    本软件的所有副本或主要部分中。
    
    本软件按"原样"提供、不提供任何明示或
    暗示的担保、包括但不限于对适销性、
    特定用途适用性和非侵权性的担保。
    在任何情况
    
    
    下、作者或版权持有人都不应对因软件或软件使用或其他交易而引起的、由软件或与软件相关的任何索赔、损害或其他责任负责、无论是在合同、侵权行为或其他行为中。
    
    //
    
    //*
    Arduino Uno 连接:
    
    请参阅 nRF24LE1产品规格以了解相应的引脚编号。
    
    注意:nRF24LE1是3.3V 器件。 需要使用液位转换器将其连接
    到5V Arduino。
    
    * D00:串行 RX
    * D01:串行 TX
    * D02:
    *~D03:
    * D04:
    *~D05:
    *~D06:
    * D07:nRF24LE1 UART/RXD
    * D08:nRF24LE1 PROG
    *~D09:nRF24LE1 _RESET_
    *~
    ~D10:nRF24LE1 UART/RXD * D08:nRF24LE1 * D13 * DMOSN 1 * DMOSN 1:nRF24LE1 * D0 * D0 * D0 * D0 *
    1 * DMOSN 1 * D0 * D0 * D0 * D0 * 1 * D0 * 1 * D0
    SPI SCK、板载状态 LED、nRF24LE1 fsck
    * A0:
    * A1:
    * A2:
    *
    A3:* A4:I2C SDA
    * A5:I2C SCL
    * 5V:
    * 3.3V:nRF24LE1 VDD
    * AREF:
    * GND:nRF24LE1 VSS
    
    (~ PWM)
    
    中断:
    0:
    1
    
    :引脚映射:
    Arduino24引脚32引脚48引脚
    D07 (RXD)12 P0.610 P0.415 P1.1
    D08 (PROG)5 PROG6 PROG10 PROG
    D09 (RESET)13 RESET19 RESET30 RESET
    D10 (FCSN、TXD)11 P0.515 P1.122 P2.0
    D11 (FMOSI)9 P0.313 P0.719 P1.5
    D12 (ISO1.0)20 P1.6
    D13 (fsck)8 P0.211 P0.516 P1.2
    
    
    引脚映射、MSP432 Launchpad 低于
    
    */
    #include 
    //#include 
    #define NRFTYPE 24
    
    #define LED_BUILTIN GREE_LED//为 Arduino 编写的原始代码、移植到 MSP
    
    
    //指定使用中的引脚
    // Arduino:
    //#define PROG 8 // nRF24LE1程序
    //#define _RESET_ 9 // nRF24LE1复位
    //#define _FCSn_ 10 // nRF24LE1芯片选择
    
    // TI MSP432:
    #define PROG 8 // nRF24LE1程序
    #define _RESET_ 9 // nRF24LE1复位 //目前我们没有使用。
    #define _FCSn_ 12 // nRF24LE1芯片选择
    
    // nRF24LE1串行端口连接。 它们因
    
    
    不同的芯片//封装而异//不需要;MSP432有2个实际 UART;无需软件串行。
    //#define nRF24LE1_TXD 7 // nRF24LE1 UART/TXD
    //#define nRF24LE1_RXD 10 // nRF24LE1 UART/RXD
    
    //软件串行 nRF24LE1串行(nRF24LE1_TXD、nRF24LE1_RXD);
    //软件串行 nRF24LE6、nRF24LE7;//软件串行 TX
    //#define NRF24LE1_BAUD
    //#define NRF24LE1_BAUD 9600 // 38400对于 SoftwareSerial 来说可能太快。
    #define NRF24LE1_BAUD 19200
    
    #define nRF24LE1Serial Serial1//这是为了将 Arduino 软件串行端口连接到 MSP432 Serial1。
    
    #define mumbo_Jumbo
    #ifdef mumbo_Jumbo
    //***** 特定于应用程序的 mumbo-Jumbo *******
    
    //#define FLASH_TRIGGER 0x01 //魔法字符触发闪存上载
    #define FLASH_TRIGGER 0x21 //魔法字符触发闪存上载,更改为'!' 以简化调试。 上载程序的问题。
    
    
    // SPI 闪存操作命令
    #define WREN0x06 //设置闪存写入使能锁存
    #define WRDIS0x04 //复位闪存写入使能锁存
    #define RDSR0x05 //读取闪存状态寄存器(FSR)
    #define WRSR0x01 //写入闪存状态寄存器(FSR)
    #define 读取0x03 //从闪存读取数据
    #define 程序0x02 //将数据写入闪
    存#define ERASE_PAGE0x52 //擦除寻址页
    #define ERASE_ALL0x62 //擦除闪存信息页^和/或主块
    #define RDFPCR0x89 //读取闪存保护配置寄存器(FPCR)
    #define RDISMB0x85 //启用闪存回读保护
    #ENDEBUG0x86 //定义 启用硬件调试功能
    
    /*注意:INFMPAGE 区域系统用于存储 nRF24LE1系统和调整
    *参数。 擦除此区域的内容将导致器件
    *行为和性能发生变化。 在
    使用擦除全部之前、应始终读取并*存储 INFMPAGE Area DSYS。 擦除完成后、必须
    将 DSYS *信息写入闪存 INFMPAGE。
    *
    *使用 READ_INFOPAGE sketch 进行备份。
    //
    
    闪存状态寄存器(FSR)
    位#define FSR_STP B01000000 //使能代码执行从受保护的闪存区域
    #define FSR_Wen 开始 B00100000 //写入使能锁存
    器#define FSR_RDYN B00010000 //闪存就绪标志-低电平有效
    #define FSR_INFEN B00001000 //闪存 INFMPAGE 使能
    
    
    //十六进制文件处理定义
    #define hex_REC_START_CODE ':'
    
    #define hex_REC_TYPE_DATA 0
    #define hex_REC_TYPE_EOF 1
    #define hex_REC_TYPE_EXT_SEG_ADDR2
    #define hex_REC_TYPE_EXT_LIN_ADDR4
    
    #definehex_REC_OK 0
    #define hex_REC_ILLEGAL_CHARs -1
    #define hex_REC_BAD_CHECKSUM -2
    #define hex_REC_NULL_PTR -3
    #define hex_REC_INVALID_format -4
    #define hex_REC_EOF -5
    
    char inputRecord[521];//编码十六进制数据行的缓冲
    器 long dataTotalSize = 0;
    
    typedef 结构 hexStructure struct hexStructeduct s Recordt{
    byte rec_data[256];
    byte rec_data_len;
    word rec_address;
    byte rec_type;
    byte rec_checksum;
    字节 calc_checksum;
    }
    hexRecordStruct;
    
    hexRecordStructhexRecord;//解码的十六进制数据
    #endif // mumbo_Jumbo
    
    size_t NumChars;//接收的串行字符计数
    器字节 fsr; //闪存状态寄存器缓冲
    字节 SPI_DATA; // SPI 数据传输缓冲
    区字节 INFOPAGE[37];//用于存储 INFOPGE 内容
    
    
    字节 ConvertHexASCIIDigitToByte (char c){
    if (c >='a')&&(c <='f')的缓冲区
    返回(c -'a')+ 0x0A;
    否则为((c >='a')&&(c <='F'))
    返回(c -'a')+ 0x0A;
    否则为((c >='0')&&(c <='9'))
    返回(c -'0');
    否则
    return -1;
    }
    
    字节 ConvertHexASCIIByteToByte (char MSB、char lsb){
    return ((HexConvertHexIIDigitToByte (MSB)<< 4)+ ConvertHexASCIIDigitToByte (lsb);
    }
    
    int RecordParseRecord (struct hexInputT * record、* inputin)
    
    
    = 0 (intrecord = NULL);intrl = 0)= NULL (if)= NULL)记录(inth = NULL)
    返回 hex_REC_NULL_PTR;
    }
    
    if (inputRecord[0]!= hex_REC_START_CODE){
    return hex_rec_invalid_format;
    }
    
    record->rec_data_len = ConvertHexASCIIByteToByByByByyte (inputRecord[1]、inputRecord[2]);
    dataTotalSize += record->rec_data_Record;
    Serial.println (record->rec_data_len);
    record->ASCrec_address = InputByte3 (ConvertByte3)、HexartBytByte3 inputRecord[4])、ConvertHexASCIIByteToByte (inputRecord[5]、inputRecord[6]);
    record->rec_type = ConvertHexASCIIByteToByte (inputRecord[7]、inputRecord[8]);
    recom->rec_checksum = ConvertHexASCIIByteToByteByteByte (inputRecord[9 +(record->rec_data_len * 2)]、inputRecord[9 +(record->rec_data_len * 2)+ 1];
    record->calc_checkSum = record->rec_data_len +(record->recrec_data->rec_len * 2)+
    
    (record->recrecrec_r_r_index +)+(recrecrecrec_+)+= 0xFF+)+(recrecrecrecrecrecr_index += rec_r_r_r_r_
    Record->rec_data[index]= ConvertHexASCIIByteToByte (inputRecord[9 +(索引* 2)]、inputRecord[9 +(索引* 2)+ 1]);
    record -> calc_checksum += record -> rec_data[index];
    }
    
    record->calc_checksum =~record -> calc_checksum + 1;
    
    if (record->calc_checksum!= record->rec_checksum){
    返回 hex_REC_BAD_CHECKSUM;
    }
    
    if (record->rec_type = hex_REC_TYPE_EOF){
    返回 hex_REC_EOF;
    }
    
    返回 hex_REC_OK;
    }
    
    void flash (){
    
    Serial.println ("flash");
    //初始化 SPI
    SPI.setBitOrder(MSBFIRST);
    SPI.setDataMode(SPI_MODE0);
    SPI.setClockDivider(SPI_CLOCK_DIV4);
    
    //初始化控制引脚
    pinMode (PROG、OUTPUT);
    digitalWrite (PROG、LOW);
    pinMode (_reset_、 输出);
    digitalWrite (_reset_、HIGH);
    pinMode (_FCSn_、output);
    digitalWrite (_FCSn_、HIGH);
    
    SPI.begin();
    
    Serial.println ("ready");
    if (!Serial.Find ("go ")){
    serial.println ("超时");
    return;
    }
    
    //读取 nupp 和 rasyb
    字节 nupp = Serial.parseInt();
    字节 rasyb = Serial.parseInt();
    Serial.Read();
    
    
    //将 nRF24LE1置于编程模式
    digitalWrite (PROG,高电平);
    digitalWrite (_reset_,低电平);
    delay (10);
    digitalWrite (_reset_、HIGH);
    
    delay (10);
    
    //设置 INFMPAGE 使能位以擦除所有闪存
    digitalWrite (_FCSn_、LOW);
    SPI.transfer (RDSR);
    fsr= SPI.transfer (0x00);
    digitalWrite (_FCSn_、 高电平);
    
    digitalWrite (_FCSn_、低电平);
    spi.transfer (WRSR);
    spi.transfer (fsr | FSR_INFEN);
    delay (1);
    digitalWrite (_FCSn_、HIGH);
    
    //检查 INFOPAGE 使能位是否设置
    digitalWrite (_FCSn_、LOW);
    spi.transfer (RDSR);
    fsr= spi.transfer (0x00);
    digitalWrite (_FCSn_、 高电平);
    
    if (!(fsr & FSR_INFEN)){
    serial.println ("infotPAGE enable failed");
    转至完成;
    }
    
    //读取 INFOPAGE 内容,以便在擦除闪存
    Serial.println (“正在保存 INFOPAGE……”);
    digitalWrite (_FCSn_,low);
    spi.transfer (read);
    spi.transfer (0);
    spi.transfer (0);
    for (int index = 0;index < 37;index++){
    INFOPAGE[index]= SPI.transfer (0x00);
    }
    digitalWrite (_FCSn_、HIGH);
    
    //擦除闪存
    Serial.println ("擦除闪存...");
    //设置闪存写入使能 LATCH
    digitalWrite (_FCSn_、LOW);
    SPI.transfer (WREN);
    delay (1);
    digitalWrite (_FCSn_、FCSn_) 高电平);
    
    //擦除所有闪存页
    digitalWrite (_FCSn_、低电平);
    spi.transfer (ERASE_ALL);
    delay (1);
    digitalWrite (_FCSn_、 高电平);
    
    //检查闪存是否就绪
    执行{
    延迟(60);
    digitalWrite (_FCSn_、low);
    SPI.transfer (RDSR);
    FSR = SPI.transfer (0x00);
    digitalWrite (_FCSn_、HIGH);
    }
    while (fsr & FSR_RDYN);
    
    //恢复 INFMPAGE 内容
    //清除闪存 MB 回读保护(RDISMB)
    INFMPALGE[35]= rasilib;
    //将所有页面设置为不受保护(NUPP)
    INFMPGE[32]= nupp;
    
    Serial.print ("RDb")
    
    
    ;(nprisb");
    
    serial.println ("正在恢复 INFMPAGE……");
    //设置闪存写入使能 LATCH
    digitalWrite (_FCSn_、low);
    spi.transfer (WREN);
    delay (1);
    digitalWrite (_FCSn_、 高电平);
    
    //回写 INFMPAGE 内容
    digitalWrite (_FCSn_、低电平);
    spi.transfer (程序);
    spi.transfer (0);
    spi.transfer (0);spi.transfer (0);
    对于(int index = 0;index < 37;index++){
    spi.transfer (INFOPAGE[index]);
    }
    delay (1);
    digitalWrite (_FCSn_、HIGH);
    
    //检查闪存是否就绪
    执行{
    延迟(10);
    digitalWrite (_FCSn_、low);
    SPI.transfer (RDSR);
    FSR = SPI.transfer (0x00);
    数字写入(_FCSn_、高电平);
    }
    while (fsr 和 FSR_RDYN);
    
    //验证写入
    Serial.println ("FIVERYINFOPAGE...")的数据;
    digitalWrite (_FCSn_、低电平);
    spi.transfer (读取);
    spi.transfer (0);
    spi.transfer (0);
    for (int index = 0;index < 37;index++){
    SPI_DATA = SPI.transfer (0x00);
    if (INFMPAGE[index]!= SPI_DATA){
    serial.print("INFOPAGE 校验失败");
    serial.print(索引);
    serial.print (":写入");
    serial.print (INFOPAGE[索引]);
    serial.print ("读");
    serial.println (SPI_DATA);
    digitalWrite (_FCSn_、HIGH);
    转至完成;
    }
    }
    延迟(1);
    digitalWrite (_FCSn_、HIGH);
    
    //清除 INFMPAGE 使能位以便对主闪存块进行编程
    digitalWrite (_FCSn_、LOW);
    SPI.transfer (RDSR);
    fsr= SPI.transfer (0x00);
    digitalWrite (_FCSn_、 高电平);
    
    digitalWrite (_FCSn_、低电平);
    spi.transfer (WRSR);
    spi.transfer (fsr &~FSR_INFEN);
    delay (1);
    digitalWrite (_FCSn_、HIGH);
    
    //检查 INFMPAGE 使能位已清除
    digitalWrite (_FCSn_、LOW);
    SPI.transfer (RDSR);
    fsr= SPI.transfer (0x00);
    digitalWrite (_FCSn_、 高电平);
    
    IF (Fsr & FSR_INFEN){
    serial.println ("infotPAGE disable failed");
    转至完成;
    }
    
    //重置已写入的总字节计数
    器 dataTotalSize = 0;
    while (true){
    //提示数据的 perl 脚本
    serial.println("OK");
    
    digitalWrite (LED_BUILTIN、HIGH);//打开 LED (HIGH 是电压电平)
    NumChars = Serial.readBytesUntil ('\n'、inputRecord、512);
    digitalWrite (LED_BUILTIN、LOW);//打开 LED (HIGH 是电压电平)
    
    如果(NumChars = 0){
    serial.println ("超时");
    转至完成;
    }
    
    switch (ParseHexRecord (&hexRecord、inputRecord、NumChars)){
    HEX-REC_OK 案例:
    中断;
    hex_REC_ILLEGAL_CHARs 案例:
    serial.println ("非法字符");
    转至完成;
    hex_REC_BAD_CHECKSUM case:
    serial.println ("校验和错误");
    转至完成;
    hex_REC_NULL_PTR 案例:
    serial.println ("NULL PTR");
    转至完成;
    问题 hex_REC_INVALID_FORMAT:
    serial.println ("无效格式");
    转至完成;
    HEX-REC_EOF 案例:
    serial.println ("Eof");
    转至完成;
    }
    
    //设置闪存写入使能锁存器
    digitalWrite (_FCSn_、low);
    SPI.transfer (WREN);
    延迟(1);
    digitalWrite (_FCSn_、HIGH);
    
    //检查闪存是否就绪
    执行{
    延迟(10);
    digitalWrite (_FCSn_、low);
    SPI.transfer (RDSR);
    FSR = SPI.transfer (0x00);
    digitalWrite (_FCSn_、HIGH);
    }
    while (fsr_FSR_RDYN);
    
    //编程闪存
    serial.println ("正在写入...");
    digitalWrite (_FCSn_、low);
    spi.transfer (程序);
    spi.transfer (highByte (hexRecord.rec_address));
    spi.transfer (lowByte (hexRecord.rec_address));
    对于(int index = 0;index < hexRecord.rec_data_len;index++){
    spi.transfer (hexRecord.rec_data[index]);
    }
    延迟(1);
    digitalWrite (_FCSn_、HIGH);
    
    
    //等待闪存写入
    执行{
    延迟(hexRecord.rec_data_len /900);//等待写入的每字节1毫秒
    digitalWrite (_FCSn_、low);
    SPI.transfer (RDSR);
    FSR = SPI.transfer (0x00);
    digitalWrite (_FCSn_、HIGH);
    }
    while (fsr_FSR_RDYN);
    
    //读回闪存以进行验证
    serial.println ("正在验证...");
    digitalWrite (_FCSn_、low);
    spi.transfer (读取);
    spi.transfer (highByte (hexRecord.rec_address));
    spi.transfer (lowByte (hexRecord.rec_address));
    对于(int index = 0;index < hexRecord.rec_data_len;index++){
    SPI_DATA = SPI.transfer (0x00);
    if (spi_data!= hexRecord.rec_data[index]){
    serial.print ("失败");
    serial.print (hexRecord.rec_address +索引);
    serial.print (":");
    serial.print (SPI_DATA);
    serial.print (");
    serial.println (hexRecord.rec_data[index]);
    digitalWrite (_FCSn_、HIGH);
    转至完成;
    }
    }
    digitalWrite (_FCSn_、HIGH);
    
    }
    
    Done:
    //使 nRF24LE1退出编程模式
    digitalWrite (PROG、LOW);
    digitalWrite (_reset_、low);
    delay (10);
    digitalWrite (_reset_、HIGH);
    
    spi.end();
    
    Serial.print (dataTotalSize);Serial.printn ("写入的字节");
    Serial.println ("done");
    }
    
    
    void setup(){
    pinMode (green_LED、输出);
    
    //启动串行端口:
    //Serial.begin(57600);
    // Serial.begin(57600);
    Serial.begin(115200);
    Serial.setTimeout(30000);
    
    //重置 nRF24LE1
    pinMode (PROG、输出);
    digitalWrite (PROG、LOW);
    pinMode (_reset_、 输出);
    digitalWrite (_reset_、HIGH);
    delay (10);
    digitalWrite (_reset_、 低电平);
    延迟(10);
    digitalWrite (_reset_、HIGH);
    
    
    nRF24LE1Serial.begin(NRF24LE1_BAUD);
    
    
    }
    
    char serialBuffer;
    char a;
    void loop(){
    if (nRF24LE1Serial.available ()>0){//即 Serial1.available ()
    //从 nRF24LE1接收直通串行数据
    a = nRF24LE1Serial.read();
    如果(a='t'){//似乎只是一个测试。
    //Serial.write ("star!");
    引脚模式(LED_BUILTIN、输出);
    digitalWrite (LED_BUILTIN、HIGH);//打开 LED (HIGH 是电压电平)
    延迟(100);
    digitalWrite (LED_BUILTIN、LOW);//打开 LED (HIGH 是电压电平)
    延迟(100);
    }
    serial.write(A);
    }
    
    if (Serial.available ()>0){
    serialBuffer = Serial.read();
    //检查 USB 串行端口上接收到的数据是否是开始闪烁的魔术字符
    if (serialBuffer = flash_trigger){
    nRF24LE1Serial.end();
    FLASH();
    nRF24LE1Serial.begin(NRF24LE1_BAUD);
    } 否则{
    //否则通过接收到的串行数据传递
    nRF24LE1Serial.write (serialBuffer);
    }
    }
    
    
    
    
    

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

    首先、在电路板管理器中、MSP432有两种不同的类型。 一个仅适用于红色板、另一个是支持黑色板的传统封装。 后一种封装不再保留、但仍适用于有黑色电路板的人。 请检查您是否安装了正确的软件包。

    根据您的评论、我知道在红色 MSP432上一切正常? 我不太理解" 只要我物理接触进入 SoC 的 Vcc 和 GND 引脚"。 您能详细说明一下吗? 只需确保将 GND 从 MSP432连接到 SoC?

    对于 MSP430、这是哪个板以及在哪个操作系统上运行 Energia?

    来自 Energia 的 Robert。

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

    您是否曾了解过这一点?  我的 MSP432遇到了类似的奇怪问题、与 nRF24L01交谈、其中 SPI 仅在我同时触摸 MISO 和 SCK、或者将长而未端接的导线连接到两者时才起作用、我不明白原因。   

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

    我无法重复这个问题。 只需确保 nRF24L01和 MSP432之间是否接地?