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.

[参考译文] RTOS/SW-EK-TM4C1294XL:在 BoosterPack 1上进行 SPI 初始化

Guru**** 2465890 points
Other Parts Discussed in Thread: EK-TM4C1294XL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/661776/rtos-sw-ek-tm4c1294xl-spi-initialise-on-boosterpack-1

器件型号:SW-EK-TM4C1294XL
Thread 中讨论的其他器件:EK-TM4C1294XLTM4C123

工具/软件:TI-RTOS

大家好、  

我尝试在 BoosterPack 1初始化 SPI 总线、以向传感器写入/读取数据。

但我通过 初始化 SPI 总线而变成错误。

以下是我的代码:

我将感谢您的任何回答或想法。

非常感谢!  

void setup_SPIBus ()  

Board_initSPI();

SysCtlPeripheralEnable (SYSCTL_Periph_GPIOP);
GPIOPinTypeGPIOOutput (GPIO_PORTP_BASE、GPIO_PIN_5);
SSIClockSourceSet (SSI3_base、SSI_CLOCK_SYSTEM);

SSIConfigSetExpClk (SSI3_base、ui32SysClock、SSI_FRF_MOTO_MOTO_0、 SSI_MODE_MASTER、10000000、 16);
SSIEnable (SSI3_base);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果遇到硬故障、通常是因为您访问的外设未启用。 有关如何调试硬件故障原因的信息、请参阅此帖子中的问题7: e2e.ti.com/.../374640
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    此外、需要注意 的是、"无法启用 SSI3"

    • 没有任何 SSI3引脚是 "引脚类型或引脚配置"
    • 我不知道如何在 RTOS 和(正常) API 代码之间划分必要的 SSI3"设置/配置"
    • 您会注意到"错误"-(部分)对该错误的描述(始终)证明是有用的...

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

    首先、感谢您的帮助!

    我的情况如下:

    在 lanchpad 的 BoosterPack 1上、我连接了一个微总线模块  

    在 mikroBUS 模块上,我连接了一个传感器(旋转式咔嗒声编码器)

    1) 1)我是使用 SSI2还是需要初始化 SSI3?

    2) 2)问题发生在锚杆线:调试变流器跳转而不 是下一个源线  

    void setup_SPIBus ()

    //LaunchPad Workshop Seite 193.

    Board_initSPI();

    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOP);
    GPIOPinTypeGPIOOutput (GPIO_PORTP_BASE、GPIO_PIN_5);
    // SSIClockSourceSet (SSI2_base、SSI_Cock_SYSTEM);
    SSIClockSourceSet (SSI3_base、SSI_CLOCK_SYSTEM);

    SSIConfigSetExpClk (SSI3_base、ui32SysClock、SSI_FRF_MOTO_MOTO_0、SSI_MODE_MASTER、10000000、 16);

    SSIEnable (SSI2_base);

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是 EK-TM4C1294XL LaunchPad 的 BoosterPack 1上的微型总线模块吗?
    download.mikroe.com/.../click-booster-pack-manual-v100.pdf

    如果是,则:
    SCL 为 PD3、SSI2CLK
    SDO 为 PD1、SSI2XDAT0
    SDI 为 PD0、SSI2XDAT1

    因此、我认为您应该使用 SSI2、而不是 SSI3。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bob:  

    非常感谢你的帮助!

    您在右上方插入的模块的链接!

    现在、SPI 初始化工作正常。  

    但现在我正在尝试读取 Mikro 模块上旋转式点击模块的旋转按钮和点击按钮状态、我遇到了一些问题。

    如何通过 GPIO#、 中断或 SPI 读/写来执行此操作?

    再次感谢您的支持!

     

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

    [引用 user="Erion Erion"]我尝试在 BoosterPack 1初始化 SPI 总线向传感器写入/读取数据。[/quot]

    以上报价来自您的第一句话-在您的第一个帖子中-此主题。    现在、您会看到"对 SPI 的使用提出疑问"。    不是这样的决定、"你要做的"、如果完全不确定、外部供应商不应该(那)接受您的提问?

    根据经验-大多数此类"传感器"通过串行总线(通常为 SPI 或 I2C)提供信号、对于(除器件"芯片选择"外的)器件、"GPIO"通常是"正在使用"的。

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

    Erion、您好!

    很遗憾、我无法回答您的问题、因为我不知道您使用的是哪种编码器、也不知道它如何连接到 EK-TM4C1294XL 板的引脚。 我见过的简单旋转开关编码器具有 A 和 B 输出、可在开关旋转时生成异相"方波"。 通过检查两个信号之间的关系、您可以确定开关旋转的方式。 通过对脉冲进行计数、您可以确定旋转开关的角度。 简单的实现可能只使用 GPIO 和软件来使信号去抖。 如果开关已经有一个去抖电路、您可以使用中断来减少 CPU 开销。

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

    Bob、CB1_mobile 和其他人、您好、  

    非常感谢您的评论和信息!

    下面我将尝试 更清楚地向您描述我的问题,以便更准确地了解您的信息:

    我的恢复原状:

    我有 一个午餐垫 EK-TM4C1294XL 、 在 Lunchpad 的 BoosterPack 1上安装 了一个微 总线上的旋转编码器。 (两者均来自 microe.com)  

    遗憾 的是、在他们的主页上没有关于它如何与 TI Lunchpad 配合使用的信息。 我可以在手册中找到的唯一信息是:

     

    它 通过 mikroBUSTm  SPI 线路(CS、SCK、MISO、MOSI)和三条与目标板通信

    用于输出编码 器信息的附加行:ENCB OUT、Enca OUT 和 SW ( 分别代替标准 AN、RST 和 INT 引脚)。

    我认为该编码器的工作方式与 Bob 在上面所说的完全相同。  因此,旋转按钮的脉冲信号(在组织文档中描述为 A 和 B)只能通过 SPI 标志环读取,因为旋转编码器的信号 A 和 B 都包含在 SPI 线路中。 … 我是否理解错了?  

    为了实现这一点、我只能使用此 GPIO:

    CS - SPI 芯片选择线路//高电平

    SCK - SPI 时钟线  

    MISO - SPI 从器件输出线路//输出

    MOSI - SPI 从器件输入线路//输出

    下面是我的代码、但它确实可以按我的需要工作:

    #include 
    #include 
    #include 
    
    /* XDCtools 头文件*/
    #include 
    #include 
    #include 
    #include 
    #include 
    
    /* BIOS 头文件*/
    #include 
    #include 
    
    /*
    当前未使用的 RTOS 头文件*用于 IPC 等高级功能。 */
    #include 
    #include 
    #include 
    #include 
    #include 
    
    /* Driverlib 头文件*/
    #include 
    
    /*板头文件*/
    #include 
    #include 
    
    /*应用程序头*/
    #include 
    #include 
    #include 
    
    #include 
    #include 
    #include 
    #include "BSPIBus.h"
    #include "7x5font.h"
    
    const unsigned short tokenSeg_1[]={
    0x7E、//0
    0x0A、//1
    0xB6、//2
    0x9E、//3.
    0xCA、//4
    0xDC、//5
    0xFC、//6
    0x0E、//7
    0xFE、//8
    0xDE、//9
    0xEE、//A 10
    0xFE、//B
    0x74、//C
    0xBA、//D
    0xf4、//E
    0xE4、//F 15
    0x01、//''。' 16.
    0xB8、//A 17
    0xE8、//b
    0xB0、//c
    0xBA、//d 20
    };
    
    uint32_t ui32SysClock;
    int i;
    uint32_t data = 0;
    uint32_t * pu32Data;
    uint8_t ui8pcData=1;
    uint32_t IdsungPin1;//= low;
    uint32_t mesval pin32_t;
    
    
    uint32_t
    = uint32_t status/i32
    ;t int i32_t int int int int intru32_t = uint32_t int int int int int;t intru32_itu32_it = u32_t uint_t int u32_t uint_t uint_t u32_t int uintuint_
    
    
    
    
    
    ui32SysClock = Board_initGeneral (120 * 1000 * 1000);
    
    ui32SysClock = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL |
    SYSCTL_CFG_VCO_480)、120000000);
    
    //*********
    //系统设置
    //*********
    
    //LaunchPad 专题讨论会第193页
    //Initialize SPI Bus (初始化 SPI 总线)*****************
    Board_initSPI();
    
    //启用 SSI0外设
    SysCtlPeripheralEnable (SYSCTL_Periph_SSI0);
    while (!SysCtlPeripheralReady (SYSCTL_Periph_SSI0))
    {
    }
    
    //将 SSI 总线配置为主接口
    SSIConfigSetExpClk (SSI2_base、ui32SysClock、SSI_FRF_MOTO_MOTO_MODE_0、
    SSI_MODE_MASTER、10000000、8);
    
    //启用 SSI2模块
    SSIEnable (SSI2_base);
    
    //初始化 Lunchpade GPIO 的*********
    
    //启用 GPIOP 外设
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD);
    //SysCtlPeripheralEnable (SYSCTL_Periph_GPIOP);//为 CS 74HC595启用端口 P
    
    //等待 GPIOD 模块准备就绪。
    while (!SysCtlPeripheralReady (SYSCTL_Periph_GPIOD))
    {
    }
    
    //配置 GPIO
    GPIOPinConfigure (GPIO_PD3_SSI2CLK); //SCL 为 PD3、SSI2CLK
    GPIOPinConfigure (GPIO_PD0_SSI2XDAT1);//SDI 为 PD0、SSI2XDAT1
    GPIOPinConfigure (GPIO_PD1_SSI2XDAT0);//SDO 为 PD1、SSI2XDAT1
    GPIOPinConfigure (GPIO_PD2_SSI2FSS); //~CS
    
    //将 GPIO 配置为输入或输出
    GPIOPinTypeGPIOInput (GPIO_PORTD_base、GPIO_PD0_SSI2XDAT1);//输入 SSI2XDAT1
    GPIOPinTypeGPIOOutput (GPIO_PORTD_base、GPIO_PD1_SSI2XDAT0);//输出 SSI2XDAT1
    
    //将芯片选择(LATCH)设置为高电平
    GPIOPinWrite (GPIO_PORTP_BASE、GPIO_PD2_SSI2FSS、0xFF);
    
    //启用 SSI2时钟系统
    //SSIClockSourceSet (SSI2_base、SSI_Cock_SYSTEM);
    
    //*********
    //系统运行发送和读取数据
    //*********
    
    // status = GPIOPinRead (GPIO_PORTD_base、GPIO_PD2_SSI2FSS);
    // SSIDataPut (SSI2_base、0x0F);
    // SSIDataGet (SSI2_base、 数据(&D);
    
    //将芯片选择(LATCH)设置为低电平
    GPIOPinWrite (GPIO_PORTP_BASE、GPIO_PD2_SSI2FSS、0x00);
    //状态= GPIOPinRead (GPIO_PORTD_BASE、GPIO_PD2_SSI2FSS);
    
    // while (1)
    //{
    i32Idx = 0;
    while (pcChars[i32Idx])
    {
    SSIDataPut (SSI0_BASE、pcChars[i32Idx]);
    i32Idx++;
    }
    
    //}
    
    
    
    

     

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

    [引用 user="Erion Erion"]

    它 通过 mikroBUSTm  SPI 线路(CS、SCK、MISO、MOSI)和输出 编码 器信息的三条附加线路与目标板通信:ENCB OUT、Enca OUT 和 SW分别代替标准 AN、RST 和 INT 引脚)。[/报价]

    我的朋友——“感受你的痛苦”——但你却冒险“深入沼泽”——现在站在“快速沙”中!   (从不好!)

    根据您的报价(上面)的"我的读数"、这3个编码器信号不是 SPI 接口的一部分!   我的结论基于"输出 编码器的三条额外线路..."这一句   现在、"如果"这3个编码器信号通过 SPI 进行路由-同样"单独"提供它们的要点(对齐)是什么?   这毫无意义-您不同意吗?

    [引用 USER="Erion Erion"]SO 旋转按钮的脉冲信号(在组织文档中描述为 A 和 B)只能通过 SPI 标记进行读取,因为旋转编码器的信号 A 和 B 都包含在 SPI 线路中。 … 我是否理解错了?  [/报价]

    在我看来-正如我在回应"报价1"时所指出的那样、这些编码器信号是 SPI 信号之外的信号-因此(很可能)它们是分开的!   我再次要求您考虑-如果它们作为"SPI 信号"提供-为什么它们也"额外"提供?   (现在我可以想到一个原因-从编码器输出到 SPI 格式的转换过程-"确实需要时间-从而减慢响应速度!")

    那么"你能做什么?"    "您应该怎么做?"

    我们对编码器一无所知!   您能否用手旋转它、以便实现"部分"输出?   然后、您可以确认编码器信号-实际上-显示在远离 SPI 信号的位置(额外和单独)!   (注意:这需要一个示波器、以便您可以"查看"编码器输出信号)  通过手动旋转编码器、您可以确认(两者)这3条附加线路的存在和功能。   确认后-您能否在旋转编码器时监控来自"传感器"的 SPI 信号、并查看这些信号的行为方式?

    我希望上述内容足够详细、足够清楚、能够提供指导和帮助。   (始终是我的目标)   

    我无法理解您是如何得出结论认为"SPI"需要"连接到该编码器"的。   您的 MCU 包含一个"3引脚、QEI 模块"、该模块的用途是"恰好是那个角色!"   和-除非 QEI 引脚和 SPI 引脚在 MCU 中"共享"相同的"引脚位置"-否则 SPI 方面似乎"比"有用的多得多!"   

    以(另一种)方式解决您的问题-"您从何处确定、"SPI 应连接到您的编码器?"   请注意、(大多数)编码器提供3个信号输出(仅限)!   因此、"SPI"的使用似乎不太可能、在这种使用中、需要进行"双向"信号通信。   (或至少-非常有限。)

    您可能会注意到、我和我的公司是"吻"的忠实粉丝。   (kiss =简单、可衡量、一次一个挑战!)   

      在我看来、您对 RTOS 和 BoosterPack 的使用会使您尝试"连接到简单的3线编码器"的尝试变得严重复杂化、因为该编码器应简单、轻松且直接地单独连接到您的 MCU 板!   (再次-至 MCU 的 QEI 输入-而不是 SPI。)   

    这将使您(以及您的无电帮助者)摆脱 RTOS 和 BoosterPack 带来的许多复杂问题(所有这些都是不必要的)!    (真的-只有混乱被"增强了!")

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

     您好 CB1_MOBILE、  

    非常感谢您的金牌答案!  

    我的朋友——“感受你的痛苦”——但你却冒险“深入沼泽”——现在站在“快速沙”中!   (从不好!)

     

    我继续在黑暗的深沼泽中!  

    hier 是 mikroe.com 上旋转编码器模块的链接

    旋转 g click  

    正如您在框架中看到的、没有明确声明旋转引脚如何与电路的其余部分相联系

    或者我不能把它破坏了吗????? 也许?? !!!

    帧:__https://download.mikroe.com/documents/add-on-boards/click/rotary-g/rotary-g-click-manual-v100.pdf

    很遗憾、我不理解该部分的含义:

    (分别取代标准的 AN、RST 和 INT 引脚)。

     


    我用红色标记了您的答案、现在我正在尝试以下操作:

    #include 
    #include 
    #include 
    
    /* XDCtools 头文件*/
    #include 
    #include 
    #include 
    #include 
    #include 
    
    /* BIOS 头文件*/
    #include 
    #include 
    
    /*
    当前未使用的 RTOS 头文件*用于 IPC 等高级功能。 */
    #include 
    #include 
    #include 
    #include 
    #include 
    
    /* Driverlib 头文件*/
    #include 
    
    /*板头文件*/
    #include 
    #include 
    
    /*应用程序头*/
    #include 
    #include 
    #include 
    
    #include 
    #include 
    #include 
    #include "BSPIBus.h"
    #include "7x5font.h"
    #include 
    #include 
    
    #include 
    #include 
    #include 
    #include 
    
    
    
    
    volatile int qePosition;
    
    
    int main (void)
    {
    
    //将时钟设置为直接从晶体运行。
    SysCtlClockSet (SYSCTL_SYSDIV_4|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHz|SYSCTL_OSC_MAIN);
    
    //启用 QEI 外设
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD);
    SysCtlPeripheralEnable (SYSCTL_Periph_QEI0);
    
    //解锁 GPIOD7 -如用于 NMI 的 PF0 -如果没有此步骤、它将不起作用
    HWREG (GPIO_PORTD_BASE + GPIO_O_LOCK)= GPIO_LOCK_KEY;
    HWREG (GPIO_PORTD_BASE + GPIO_O_CR)|= 0x80;
    HWREG (GPIO_PORTD_BASE + GPIO_O_LOCK)= 0;
    
    //将引脚设置为 PHA0和 PH0
    //GPIOPinConfigure (GPIO_PD3_IDX0);
    GPIOPinConfigure (GPIO_PD6_PHA0);
    GPIOPinConfigure (GPIO_PD7_PHB0);
    
    //设置 QEI 的 GPIO 引脚。 PhA0 -> PD6、PhB0 -> PD7。 我认为这会设置上拉电阻并使其成为输入
    GPIOPinTypeQEI (GPIO_PORTD_base、GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_3);
    
    //在配置前禁用外设和 int
    QEIDisable (QEI0_BASE);
    QEIIntDisable (QEI0_BASE、QEI_INTERROR | QEI_INTDIR | QEI_INTTIMER | QEI_INTINDEX);
    
    //配置正交编码器,使用任意上限1000
    QEIConfigure (QEI0_BASE、(QEI_CONFIG_CAPTURE_A_B | QEI_CONFIG_NO_RESET | QEI_CONFIG_POSION_SWAP)、1000);
    
    //启用正交编码器。
    QEIEnable (QEI0_BASE);
    
    //将位置设置为中间值,以便我们可以查看是否正常工作
    QEIPositionSet (QEI0_BASE、500);
    
    //添加 qePosition 作为观察表达式以查看值 inc/dec
    而(1)//这是程序的主循环
    {
    qePosition = QEIPositionGet (QEI0_BASE);
    SysCtlDelay (1000);
    }
    }
    

    但通过编译、我得到了以下错误:

    说明资源路径位置类型
    #20标识符"GPIO_PD6_PHA0"是未定义的 main.c / RTOS_Blinky 行84 C/C++问题的副本
    #20标识符"GPIO_PD7_PHB0"是未定义的 main.c / RTOS_Blinky 行85 C/C++问题的副本
    gmake:***[main.obj]错误1 RTOS_Blinky C/C++问题副本
    gmake:目标"全部"不会由于错误而重新生成。 RTOS_Blinky C/C++问题的副本
    无法解析符号"GPIO_PD6_PHA0" main.c / RTOS_Blinky 行84的副本语义错误
    无法解析符号"GPIO_PD7_PHB0" main.c / RTOS_Blinky 行的副本85语义错误

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

    感谢您-您的回答非常迅速-但非常详细。 非常感谢。

    说什么? 遵循"kiss"-我们是否可以"绕过"RTOS -至少直到我们让您的编码器执行? (公司/我绝不会使用"单一供应商的产品"-这证明太有限了!)

    我注意到了您的代码行:"#include" "添加.c 文件是"不好的做法"! (.h 应证明足够)

    我希望"qei.h 和/或 PIN_MAP.h"包含(两者)您的"GPIO_PD6_PHA0和 PHHB0"定义。 可能是 RTOS 导致它们被拒绝。 您可以搜索每个标识符的存在-甚至是"一般 Windows 搜索应该起作用"。

    尝试-并报告。   也许可以解释为什么您对 RTOS "感到需要"。   今天晚些时候"释放"时间(我们在周日工作!) 我将查看您的编码器规格-感谢您的链接...

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

    感谢你的帮助。

    我现在不是很早,我犯了错,但通过编译项目,我遇到了以下缺点:

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

    嗯,这不是很好!

    我建议您(暂时)避免使用 RTOS -查找一个简单的"供应商提供的项目"-并加载"仅此!"   "供应商提供的项目"获得巨大成功并管理"所有困难/要求苛刻的设置和配置"、这是我们所追求的"过度挑战"!    这些困难的设置/配置是您最近 的"错误入侵!"中的"主要怀疑者"

    简单供应商提供的项目应编译时出现错误-此时添加代码的"小段/小段"。    再次-小部分-一次一个 (然后定期确认您的(扩展)代码保持"无错误!")    (这样"已完成"代码加载时不会出现可怕的错误。)

    我还建议您断开与任何 Booster 板的连接(这也是临时的)、以便我们尽可能减少"干扰太大-太快"的可能性。    复杂性-由额外的电路板和 RTOS 带来-没有成功 (有吗?)    我的方法是遵循 kiss -并 尽可能简化。

    当您完成此操作后-再次发布、我们将(一起)尝试"逃离沼泽..."

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

    非常感谢您的帮助。  

    现在、我可以在板上对代码进行编译和调试。

    问题是我的主板 TM4C1294XL 使用端口 L 而不是端口 D (主板 TM4C123将使用端口 D)与 QEI 通信。  

      这在手册第1750页中进行了说明。 (!!!)

    现在、我编译代码并将其转至电路板并对其进行调试。  

    现在的问题是如何通过去除编码器的两个信号(A 和 B)的去毛刺来看到?!  

    谢谢!

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

    虽然很高兴了解您(现在)编译的代码-我无法(甚至开始)相信您 的"从 Port_L 更改为 Port_D"(单独) -导致 "消除您过去的所有错误!"

    其他人肯定会跨越您的话题-我们应该"也为他们提供"成功之路"-我不相信"我们已经(尚未)做到了!"   (这是最值得的-您不同意吗?)

    我想问-除了"两个端口的更改"之外、您是否进行了更改、以便成功编译?    您是否遵循了(任何)我的"亲吻"(即简化)指导?   Fi/i"生活设计和诊断此类问题"-因此我们有一定的成功记录-并将其中的大部分归功于"寻求简化!"   (确保充分高度有序和专注的注意力!)    (当"空气中有太多的焊球"时不可能。)  (即"此处")

    您现在问:"如何调试编码器信号"A"和"B"?"   

    • 您是否访问了范围?   
    • 编码器规格表应显示时序图-旋转编码器应使您能够监控这些"A"和"B"输出
    • 如果它们看起来符合规格-则必须确保它们(实际上)到达 MCU 中的正确引脚
    • 并且-不存在其他(可能有违例)连接。   (这说明了我建议您 "放弃 Booster 板-现在"的原因。)

    在 "软件/示例/外设/检查您的版本是否包含任何  QEI 代码示例。   (我的没有)  如果没有显示-仔细阅读"外设驱动程序库用户指南"中的 QEI 章节-这是一个了不起的文档-实际上有一个 QEI 示例-并详细说明每个"QEI 功能"-正是您所需要的...

    阿尔利斯!