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.

[参考译文] TM4C123GH6PM:MCP23S17总线扩展器的 SPI 故障

Guru**** 2439560 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/624814/tm4c123gh6pm-spi-trouble-with-an-mcp23s17-bus-expander

器件型号:TM4C123GH6PM

我正在尝试将 TM4C123G Launchpad 与 MCP23S17总线扩展器相连。  目前、我正在尝试读取地址0x00处的配置寄存器。  总线扩展器的数据表规定:

SPI 写入操作通过降低 CS 启动。 。
写入命令(R/W 位清零的从器件地址)为
然后计时到器件中。 操作码后跟
一个地址和至少一个数据字节。

SPI 寻址表示为0 1 0 0 ADR2 ADR1 ADR0 R/W A7 A6 A5 A3 A2 A1 A0。  使用硬件寻址000、因此我们有一个编码为0x4100 (地址0、读取=1)和寄存器地址0x00的 uint32_t。  

SSIDataPut (SSI0_BASE、0x4100);

while (SSIBusy (SSI0_BASE));

SSIDataGet (SSI0_BASE、rxData);

有16个时钟脉冲、输出数据良好、但随后时钟停止。  输入数据通常会在下一次发送期间传入。  我们一直在尝试发送额外的字节来保持时钟处于活动状态、但我们无法使它可靠地工作。  我可以更改地址、并在其他寄存器返回 POR 默认值时看到相同的结果。  请提供帮助!  谢谢

观察示波器、可以看到* CS 正常、我看到输出 SSI0 TX 使用0x4100。  紧随其后的是 SSIDataGet ()。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您的代码是(非常)压缩的、不显示关键字"SSIConfigSetExpClk()"函数-该函数负责将 MCU 的 SPI 格式与 SPI 从器件的 SPI 格式"匹配"。 大多数情况下、MCU 比从器件更喜欢"格式灵活性"、因此 MCU 应"匹配"从器件的格式。 此信息是否符合您的理解-您是否(受雇)在某处履行该职能-但不能发布?

    您会注意到16个时钟脉冲-然后时钟停止。 时钟是否与您的 SPI 数据输出同步? 当数据耗尽时、SPI 时钟会暂停是正常的。 这也是您的理解吗?

    这里的大多数用户发现(他们的)对"SPI_CS"的控制优于允许 MCU 控制"CS"。 (选择16位时预期会出现这种情况-此时 CS 信号必须精确符合从器件的时序和信号表示规格。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    ROM_SSIConfigSetExpClk (SSI0_BASE、8000000、SSI_FRF_MOTO_MOTO_0、SSI_MODE_MASTER、1000000、 16);

    我将*CS 作为一个 POI 进行控制,并且计时完全在从设备数据表指定的容差范围内。

    您对时钟同步到数据输出的解释是、我如何理解时钟应该如何运行、但它不像我预期的那样运行。  当我写入三个字节时、我预计会看到24个时钟脉冲、我会这样做。   但是、通过观察示波器上的 SI 线路(因此 MCU 的输入、从器件的输出)、我将看到 SI 线路在最后一个时钟脉冲上变得最频繁、 有时、数据(0xff)将在前两个字节之一的下一次传输中显示。  我说"显示"意味着我可以验证示波器上的数据(对于8个时钟脉冲的上升沿、SI 为高电平)。  

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

    感谢您-您是否已(刚刚添加)"ROM_SSIConfigSetExpClk()"-在您的初始过帐/代码列表中未出现该问题仍不清楚。   (我没有时间确认您选择的参数-确保它们正确-最佳结果通常来自器件初始"启动"期间的"较慢计时")

    我们已经过去(成功地)在 SPI 和 I2C 实现中使用了该器件。   (由于节省了"2引脚"、我们最终选择了 I2C 版本。)

    Fi/I 是"吻"的大信徒-这是最简单的任务、设备是"设置然后读取其配置"。   您是否尝试过-如果是-您的结果是什么。 我记得、我们仅向器件传递了"单字节"命令和数据(如果我的调用正确)。 (由于该器件被组织成"8位端口"、这也是我"多年前"的信念。)   您是否可以尝试通过这种"单字节方法"来简化并可能"解决"您的时钟问题?

    我们通过16个 LED "测试/验证"(两个)版本的" I/O 扩展器"(从技术上讲、它不是"SPI"总线扩展器")-一个连接到每个器件的 I/O  (低速时的"行走1"(或零)可简化设备验证...)

    请注意、我们使用的是"精心实施的试验板"、我们的布线为8英寸或更低。   确保器件电压(交易期间)正确且稳定、并且所有连接都安全...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它一直在那里,只是从原来的帖子中省略了。
    我们正在其他项目中成功使用 I2C 版本。 我使用 SPI 版本的原因是为了提高写入速度。 我将在闭环控制系统中以4kHz 的频率向两个 MCP23017器件写入16位输出。 因此、在 SPI 读取 ADC 以进行控制环路反馈、控制环路计算以及写入 DAC 和总线扩展器(控制数字到同步转换器)之间、我处于过度运行250微秒时间片的最前沿。 我实施了一些 GPIO、并将其发送到示波器以评估时序。 使用 SPI 对 DAC 进行16位写入的时间小于10uS (@ 1MHz 比特率)、而 I2C (高速400kHz)对总线扩展器进行写入的时间几乎为120 uec。 因此、为了获得一些保留时序、我尝试用 SPI 总线扩展器替换 I2C 总线扩展器。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我认为您需要屏幕快照。

    [引用 user="Brian Savage">当我写入三个字节时、我预计会看到24个时钟脉冲、我确实这么做了。   [/报价]

    很好。

    [引用 user="Brian Savage">但是、观察示波器上的 SI 线路(因此 MCU 的输入、从器件的输出)、我将看到 SI 线路在最后一个时钟脉冲上最常变为高电平、 有时、数据(0xff)将在前两个字节之一的下一次传输中显示。  i[/报价]

    SI 为从器件输入(主器件输出)。 全名是 MOSI (主器件输出从器件输入)和 MISO (主器件输入从器件输出)。

    如果您没有将它们连接错误、这听起来可能是时钟/数据相位不匹配。 有四种不同的可能性、这很容易实现。

    Robert

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

    您肯定已经"证明了"使用 SPI -您(毫无疑问)熟练且经验丰富、能够正确配置从站-但这些事实在您的初始帖子中"不可用"。 许多海报都通过重新编写供应商的合法"锅炉铭牌"和其他"不签发"的代码来"让我们感到厌烦"、这两个代码都掩盖并掩盖了他们的"真实代码问题"。 预扣、因此不建议使用钥匙 A 功能。

    了解(现在)您的需求的重要性-今天我将"腾出时间"来回顾设置/配置。 器件的要求。 (可能不会等到"盈利申请时间"到期-即晚上...)

    作为替代方案-您是否考虑使用传统的"锁存器?" 如果您有一个具有"非关键控制功能"的端口-您可以与锁存器"共享"它。 (锁存输出将保持稳定/安全、并且最有可能满足(甚至超过)您的"加速"要求...)   (注意:锁存器通过来自第二个(不同)端口的 GPIO 进行"计时"-假设您使用了8位锁存器(即 HCT373等))

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    哦、不确定您使用的是逻辑分析仪还是'scope。 如果您使用的是逻辑分析仪、请破开示波器并验证波形、确保波形尽可能干净。

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

    [引用 USER="CB1_MOBILE]作为替代方案-您是否考虑使用传统的"锁存器?" [/报价]

    在任何情况下、我通常都建议使用 I/O 扩展器。 更便宜且多种来源。

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我使用的是示波器。 我的电线短而干净、信号形状都很好、并且处于适当的水平。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您(现在)有两票赞成"更简单、更快"的锁存器!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    最好也在 I/O 扩展器公司的论坛上发帖-询问他们认为器件(最佳)吞吐量是多少...  (这种"证明"为这种情况下的进一步时间/努力支出是合理的)

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

    [引用 USER="CB1_MOBIT"]一个8位锁存器(即 HCT373等)[/QUERP]

    '595或 '165具有适当的锁存器(已经是串行<->并行)是合理的。 尽管输出使能可连接到一个恒定值、但它们可以使用额外的控制线来实现可能的输出使能和输入锁存。

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    确实如此-但对于"4C3"S"的 GPIO 时钟的"缓慢"而言。 (海报正在拍摄、以实现高输出速度)

    两个 GPIO 写入(一个是向锁存器显示数据、另一个是时钟/锁存器)通过 SIPO 超过8个时钟。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可能可以通过将 CS 信号反相来消除输入锁存信号。

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

    [引用 USER="CB1_MOBILE]-实际上-但对于"4C3s" GPIO 时钟的"缓慢"。 (海报正在拍摄、以实现高输出速度)

    两个 GPIO 写入(一个是向锁存器显示数据、另一个是时钟/锁存器)通过 SIPO 超过8个时钟。

    [/报价]
    您是否会将它们放在 SPI 上? 我可以。
    Robert
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果事实证明、"8个 SPI 时钟"在比"2个 GPIO 写入"更短的时间范围内发生(通过快速总线!) 使用此类“SIPO & LATCHED”设备确实有意义。 但请记住、有些(这里)(有些/有些)相信 kiss -并且使用8位锁存器满足"kiss"要求。

    您的观察结果很好:反相 SPI CS -但存在'373和(较小的已知值)'374 -哪个 iirc -从该对中选择可适应 CS 极性...  (其中一个可以是边沿计时与电平计时)

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

    我将您的 SIPO 读取为 GPIO、而不是并行输出串行。

    除非操作 I/O 速度比 SPI 慢、否则锁存器速度会更快、但它们需要更多的引脚。

    如果您需要、您可能需要使用一个引出内存总线的器件。

    Robert

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

    如果记忆功能-当我是一个"薪酬男子"时-'595需要(尚未)引入。   众所周知、164路输出与移位时钟"传播"、增加的控制(以引脚为代价)使'595变得更加有用。   正如您所注意到的、使用 SPI 的"时钟和数据"非常匹配。

    较新/其他 M4器件声称 SPI 时钟速率为50MHz (M7s 也达到该速率。)   如果'595接受该价格-我们的海报应该"好走了。"   (几乎)

    海报消失了(奇怪的)安静-你/我是否"赶走了"另一个?   (我以为我们有一个、"Kinder/gentler Robert。。。")

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

    [引用 USER="CB1_MOBIT]]较新/其他 M4器件声称 SPI 时钟速率为50MHz (M7s 也达到该速率。)   如果'595接受该价格-我们的海报应该"好走了。"   (几乎)

    我不认为它们运行得这么快、如果内存提供、它们的顶出速度大约为一半、但可能有些快速逻辑器件运行得更好。 在50MHz 时、需要仔细进行布局。

    [引用 user="CB1_MOBIST"]海报已变得(奇怪的)安静-您/我是否"避开"另一个?   (我以为我们有一个、"Kinder/gentler Robert ...")

    我认为我们中的任何一个都不是特别敌对的,我认为我们只是一种自我维持的反应。 无需进一步输入。 《任择议定书》可能只是在等待有机会在网上找到一个词。

    Robert

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

    值得注意的是,“大城市”的小玩意儿——“被人“淹没”了“官方的声音!”   (可能会制造(另一个、不必要的)"类似"射击队...)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    被赶走了? 不是...我参与的其他计划的战斗火灾。 我回到了我的工作台、并将在晚上的剩余时间内再次查看此内容。 我会随时向您发布。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    很好-了解 Robert & I (分享)一些"幽默感"。

    我们都试图证明我们的帮助-我(过去)确实成功了,尽管这是10年前(2006年)-我对我们实现的 I/O 速度没有任何回忆。  (我们采用它来控制小型、图形、单声道 LCD -为此目的、它被证明是一流的...)

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

    [引用 USER="CB1_MOBIST"]好的-了解 Robert & I (分享)一些"幽默感"。[/引述]

    我们现在所说的是这种情况吗?

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    主席先生(安静):你的工作是否不是促进(两者)***相似***和“亲吻”?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Brian、

    您对该问题的介绍非常详细、但我觉得我仍然缺乏从调试角度真正吸收我的牙齿的信息。 如果您可以为器件和 SPI 配置发布更完整的代码、发送数据的过程等、而不是非常小的片段、 和/或还提供示波器/逻辑状态分析器截图、其中显示了良好的后续步骤、有助于跟踪此问题的根本原因。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../waveforms.pdfI在封闭区域工作、因此我无法捕获示波器图像。  我在尝试读回寄存器时绘制了示波器图像。  此外、我能够 打开连接到 LED 的输出、因此 看起来我正在写入、我无法读回寄存器、考虑到它具有8个输入、8个输出、这一点并不有用
     
    以下是初始化代码:

    void SpiInit_SSI0 (void){
    
    //必须启用 SSI0外设才能使用。
    ROM_SysCtlPeripheralEnable (SYSCTL_Periph_SSI0);
    
    ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
    
    //为端口 A2、A3、A4和 A5上的 SSI0功能配置引脚复用。
    ROM_GPIOPinConfigure (GPIO_PA2_SSI0CLK);//为时钟配置 PA2
    // GPIOPinConfigure (GPIO_PA3_SSI0FSS);//为*CS 函数使用 GPIO。
    ROM_GPIOPinConfigure (GPIO_PA4_SSI0RX);//为主接收
    ROM_GPIOPinConfigure (GPIO_PA5_SSI0TX)配置 PA4;//为主发送配置 PA5
    
    
    //为 SSI 引脚配置 GPIO 设置。 此功能还将
    这些引脚的//控制提供给 SSI 硬件。 请参阅数据表来
    //查看每个引脚分配的函数。
    //引脚分配如下:
    // PA5 - SSI0Tx
    // PA4 - SSI0Rx
    // PA3 - SSI0Fss -未使用-用作 GPIO 来控制* CS
    // PA2 - SSI0CLK
    ROM_GPIOPinTypeSSI (GPIO_PORTA_BASE、GPIO_PIN_5 | GPIO_PIN_4)
    
    ;配置 GPIO_PIN_MASTER_4端口|启用 GPIO 端口。 在
    
    //飞思卡尔 SPI 模式、主控模式、1MHz SSI 频率和8位数据中使用 SSI0、//系统时钟电源、空闲时钟低电平和低电平有效时钟。
    //对于 SPI 模式,可以在 SSI
    //单元空闲时设置 SSI 时钟的极性。 您还可以配置要
    //捕获数据的时钟边沿。 有关
    //不同 SPI 模式的更多信息、请参考数据表。
    ROM_SSIConfigSetExpClk (SSI0_BASE、8000000、SSI_FRF_MOTO_MOTO_0、
    SSI_MODE_MASTER、1000000、 8);
    
    //启用 SSI0模块。
    ROM_SSIEnable (SSI0_BASE);
    
    
    uint32_t pui32DataRx[2];
    
    //从 SSI 端口读取任何剩余数据。 这样可确保接收
    // FIFO 为空,因此我们不会读取任何不需要的垃圾。 这是在这里完成
    //因为 SPI SSI 模式是全双工的,允许您
    同时发送和//接收。 SSIDataGetNonBlocking 函数在
    返回数据时返回//"true"、在未返回数据时返回"false"。
    //“非阻塞”函数检查接收
    FIFO 中是否有数据//如果没有数据,则不会“挂起”。
    while (ROM_SSIDataGetNonBlocking (SSI0_BASE、&pui32DataRx[0])){}
    
    

    ===================================================================================================

    我在 main()中有这个执行读/写的测试代码。

    SpiInit_SSI0 ();
    
    //在此处插入测试代码
    
    GPIO_Porta_DATA_R |= GPIO_PIN_3;//切换* CS 行
    SysCtlDelay (10);
    GPIO_Porta_DATA_R &=~GPIO_PIN_3;
    SysCtlDelay (10);
    GPIO_Porta_DATA_R |=
    SysCtlDelay (3);GPIO_SysCtl_PIN_100;GPIO_PIN_PIN_100;
    
    uint32_t datain[4]={0xA5};
    
    GPIO_PORta_data_R &&~GPIO_PIN_3;//将 PA3 (* CS)拉低
    SysCtlDelay (50);
    SSIDataPut (SSI0_BASE、0x40);
    // while (!SSIBusy (SSI0_BASE);
    SSI0A_base
    (SSI0a);SSI0a (SSI0a)
    SSIDataPut (SSI0_BASE、0x20);
    while (!SSIBusy (SSI0_BASE));
    
    SysCtlDelay (650);//保持* CS 线路为低电平一段时间以允许数据随时钟输出。
    GPIO_PORta_data_R |= GPIO_PIN_3;// PA3返回到高
    
    SysCtlDelay (g_ui32SysClock);
    
    while (1){
    
    GPIO_Porta_data_R &&~GPIO_PIN_3;//将 PA3 (SSCS)拉回低
    SysCtlDelay (60);while (
    SSIDataPUT)
    
    ;while
    (SSI0)/SSI0 (sbast_base);while (SSI0)/SSI0* 0a (0b)/SSIb (0a (0a)/SSIb)/SS0a (while (0a (0b)/SSIb)(0a (0a)/SSIb)/SS0a (0a
    SSIDataPut (SSI0_BASE、0x00);
    while (!SSIBusy (SSI0_BASE));
    SSIDataGet (SSI0_BASE、&datain[0]);
    
    
    SysCtlDelay (650);
    GPIO_Porta_data_R |= GPIO_PIN_3;// PA3返回高
    打印("从 SPI %x %x %x\n\n"、datain[0]、datain[1]、datain[2]、datain[3]读取的数据);
    SysCtlDelay (g_ui32SysClock);
    
    
    }
    
    //测试代码结束 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请注意-之前的帖子(9月13日06:03)在回答我的请求时报告了不同的"SSIConfigSetExpClk()"。  以下是(过去)代码:

    [引用用户="Brian Savage"]            ROM_SSIConfigSetExpClk (SSI0_BASE、8000000、SSI_FRF_MOTO_MOTO_0、SSI_MODE_MASTER、1000000、 16);[/引述]

    这里是"最新的":   ROM_SSIConfigSetExpClk (SSI0_BASE、8000000、SSI_FRF_MOTO_MODE_0、 SSI_MODE_MASTER、1000000、 8);

    我建议将"8位"更改为(更好)符合"kiss"。   (由于该供应商的 MCU 和 SPI I/O 扩展器均基于8位。)

    也许这种"改变"是为了回应我的方向...   不清楚海报是否有足够的时间来评估此代码更改的影响...

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

    确实-"你"就是("你")!       (很好) (PS151教师-将年轻/大声的 CB1强迫到教室后部会很高兴。)   (可能)

    您是否有时间根据此新代码制度"尝试"?   (在我们的场外仓库中的某个位置、为简单的 LMI MCU (28引脚)和确切的从属设备...)提供"工作代码"。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在过去几个小时里,我一直在与它合作,但没有取得任何进展。 行为相同
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    哎呀——感受你的痛苦! 请注意、您可以"写入其中一个从器件的8位端口"、但不能"从另一个接收"、这是否正确?

    写入"速度"太慢、不适合您的舒适度?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我能够更早地完成。 我有一个与 LED 连接的 FET、能够打开和关闭 LED、但这似乎已经停止工作。 是时候把它称作一天了、早上再看一下它。 感谢你的帮助
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这对我来说仍然是极性问题。 我有多个配置了错误极性、但仍然主要工作。 有时、我甚至让它正常工作、只在详细回顾相关边距消失的时间时才注意到它。

    我不熟悉您的芯片、也不从 e2e 下载文件、因此无法对您提供的详细信息进行进一步评论。

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

    正如您所注意到的、"极性违规"可能(几乎)成功是令人感兴趣的。   我本来不会期待这种情况。

    现在、当您"模拟"CB1和 C破解 crüe 时、他们注意到:

    已经******没有受到无赖/不必要的“Beheading”——您已经很久没有达到您(最恰当的) Guru 状态了。   (在此-您的第二个“频道”... 我也有一个"被烧烤/较小的第二个频道")

    你们为这么多人(尤其是这位记者)提供了很多帮助、非常感谢!  (我会大声地鼓掌,但我(仍然)的“治愈”手腕骨折... 我对"过度刺激"的恐惧是众所周知的、有问题的 PB0/PB1!)

    恭喜——非常好的获得/应得!

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

    [引用 USER="CB1_MOBILE]"极性违规"会(几乎)成功、这一点很有趣、正如您所注意到的。 [/报价]

    它归结为在行为未定义的区域(与随机不相同)中运行。 当极性错误时、读取器会尝试在数据发生更改的同一个边沿上输入时钟数据。

    由于数据输出将稍微跟踪时钟边沿、因此读取器可能有足够的时间为之前的数据计时、或者它可能为下一个数据计时、甚至可能不一致。 对于任何特定的零件集、它可能会持续工作一年、而仅仅是处于故障边缘。

    正如您所说的、结果并不直观。

    [引用 user="CB1_MOBIST"] (我会大声地鼓掌,但我的(仍然)“治愈”手腕骨折... 祝贺[/引述]

    谢谢、

    Robert

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

    [引用 user="Robert Adsett">它会向下转到在行为未定义的区域中运行... 由于数据输出将稍微跟踪时钟边沿、因此读取器可能有足够的时间在之前的数据中计时

    出色的解释——克裂的员工(现在、正确)"在他们的靴子中(定价过高)划皮!"   (CrT 供应商可能必须向您提供"超出通常分配的情况:"低线程数 T 恤衫和(漏损)杯子"...it 假设您已阅读两个"奖励"的最新"勘误表")

    现在-当您(有点)诽谤时、"克裂 CB1员工"-他们在本海报的帮助下展示了以下"定制板"以及"我们公司全新(待定)要求。"

    “几个小时的努力”不会太破旧!   一如既往-电路板符合 kiss 标准-请注意16个 LED -按端口组织-正如此海报芯片所指定的那样。   对于低数据速率和"人类可识别"更新-这些 LED 证明更具激励性和更具数据兼容性 (它们可以轻松 揭示所有16个芯片引脚的状态!) 甚至超过最佳范围。  (或逻辑分析仪)  、当然、我们的公司会保持许多这样的"效率辅助- kiss 实施-对于设计/开发非常有帮助...   (并且很难证明供应商不愿接受、"亲吻!"   (您/我将为他们做什么!)

    请注意、员工插入了一个 R-C 网络来"自动生成"芯片的复位。   此外、当以 SPI 格式1-1运行时、芯片规格指示"需要额外操作"。  (我们的海报是否注意到了这一点?)

    如果时间允许、我们将"编辑" jpg 的大小-希望员工"在线查看他们的努力。"   这就应该重新声明被禁止 的******。

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

    @Brian、

    正如您所注意到的、Robert 和我都代表您做出了持续(认真)的努力。    我即将起飞、但打印了奴隶数据表的精髓、并准备了我们的全新(自制)评估板和 LPAD、供当天晚些时候或今晚使用。

    您能否总结一下最新的问题?   我记得:

    • 无法从任一从 I/O 端口"读取"
    • 缓慢、连续写入(仅限)输出端口。  (这必须意味着您只有一个输入端口)
    • 最近的报告似乎表明(当时)"写入输出端口"的能力也有所减弱(可能消失)

    这是否接近事实/电流?   (那些不满意的人-挑战我的记忆-(最不满意)-请更新/建议...)

    我之前曾说过(我的回忆)我们过去使用过(kiss 认可) 8位仅传输到该(确切)器件。   上述内容-第16页、图3-7 (MCP 数据表)显示:"CS 在 MCU 生成的整个16位传输(器件操作码+寄存器地址)期间为低电平。   这(似乎)会取消8位(仅限)传输机制的资格-您是否同意?   (或者、您是否仅通过8位尝试并成功通过?)   

    我上次访问该器件时是2006年(我记得与我们合作的客户-因此该日期是确定的)-再次查看@"寄存器摘要"(即现在)我没有/零保留我们选择和执行的内容/原因。   (该代码已保存-在接下来的几天内、我无法使用)   

    因此、我们"在同一页上"、我将使用8.9、12、13和15-18的页进行旅行。  请确认或记录您认为错过的任何(相关)页面-谢谢您...

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

    我能够将测试设置移出封闭区域并保存一些示波器数据。  以上是"良好"的读数。  写入0x4100、操作码 x41、地址 x00、这是 GPIO A 方向寄存器。  POR 值为0xFF。

    遗憾的是、仅当读取5次中的1次时才会出现这种情况。  我将以1Hz 的速率读取。  其余内容如下所示。

    操作码和寄存器地址的写入相同、但响应不同。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    明白了-我们(可能)有相同的4通道、混合信号、Tek 示波器...

    我对您的问题的总结(接近)是否正确? (超出读数跟踪-在此提供。) 谢谢。
    您的 MCP 董事会是否与哪些员工为我服务?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 USER="CB1_MOBIST">也就是说-第16页、图3-7 (MCP 数据表)显示 MCU 生成的整个16位传输(器件操作码+寄存器地址)期间的 CS 低电平。   这(似乎)会取消8位(仅限)传输机制的资格-您是否同意?[/引述]

    您只需在多个传输期间保持芯片选择有效、如果使用处理器芯片选择机制、而不是切换引脚、这应该只会出现问题(也许)。

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我注意到、故障电容器显示(Ch2蓝色-从器件输出)为"过早"和"错误!" 在 CS (Ch1黄色)驱动为低电平(Ch4绿色- MCU 时钟)时、您已正确触发(每个电容器)、并且(当您声明时)您的 MOSI 数据完全一致!

    那么-那么、会导致这种情况的原因是什么? 您是否注意到我之前提到的"注1、图1-5、Pg8 MCP 手册?" 这说明了"额外切换 CS -上电后首次通信之前。 (单独)这是否是您的问题?

    作为一个(有时/轻微)" kiss 的差值"-请将您的 SPI 时钟速率减半-然后重新测试。 (请幽默我-客户经常抗拒-总是缓慢而简单-回报!)

    请注意、这些 CAP 本身并不提供整个 MCP 图片。 器件必须将该端口(较早版本)命令进入接收模式-这不是真的吗? 也许您已经这样做了-但事实还不是证据!

    魔鬼总是在这样的细节上(为什么这里的一些人会赚"大钱")-我们会解决这个问题-但我现在必须飞。 (当天晚些时候回来...)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否放大第一个字节的时钟/数据? 细节不足以确定时钟。

    Robert
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这就是我选择使用 GPIO 来控制 CS 的原因。 如果您在示波器中注意到、每个字节之间的时钟周期延迟为1。 我在写入三个连续字节的同时将 CS 保持为低电平。

    我无法再次写入器件的输出。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Geez Robert -员工叫我的盲人! (加拿大的健康/眼部护理是否像我们的"负担不起/无护理"幻影一样糟糕?)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 USER="CB1_MOBILE]Geez Robert -员工叫(我)盲! (加拿大的健康/眼部护理是否像我们的"负担不起/无护理"幻影一样糟糕?)[/引述]

    Nah、这是遗传学。

    但是、全屏显示并不起作用。 我认为、即使使用光标步进样本进行采样、也很难看到边沿在做什么、整个时钟周期看起来只有12到12个样本宽。 不过、这是对交易的良好概述。 好消息是时钟不会出现格式错误。

    比如、您将其减慢一个数量级左右的想法。

    Robert

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

    罗伯特——我们的“航行”被推迟了(一直到更热的时候) Atlantic Waters return)我准备为您提供为期一周(免费使用)的我们公司的"看门狗/眼"(有点高) German Shepherd Rex! 他(只有)偶尔会走进墙壁/树木-但他(当然)可以将月亮识别为"比"更"的"斑点"。

    我们被告知有一个“秘密”的 Booster Pack 正在开发中,应该把“鼠疫-抗议者 R9/R10”删除—地球的月亮(也许)注册为(远远超过)一个斑点。   (它确实得到了提升...不注意失真... 哦、您可能希望避免"errata bing" PB0/PB1!)

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

    我希望我们暂时"暂停" MCP 读取。 (我们过去使用的一些方法是(缓慢)返回给我)

    在理想情况下(同时)对指定为输出的端口执行8位和16位写入操作时、请告知您的结果。 同样、请务必降低 MCU 的 SPI 时钟速率、以便我们获得最大的成功几率。

    如果您成功进行完全受控的写入-然后逐渐/逐渐增加时钟速度-并显示您的代码、显示"背靠背写入"-您之前描述为"太慢"、无法对您的应用程序有效。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Brian、

    观察您的示波器捕获情况、我同意 CB1关于 Ch2蓝- MISO 线似乎过早地变得很高的看法。 这是捕获之间唯一显著的偏差、但肯定是显著的偏差。 我也赞同他建议的暂时降低 SPI 时钟速率的测试、以便我们可以观察结果并查看是否发生了任何变化。

    完全了解较慢的时钟速度可能会与最终要求不一致、但首先让我们看看这是否有助于跟踪发现问题的根本原因。

    详细查看您的代码我有一个问题、然后有几个一般性意见/建议:

    1. 在我认为是您在此处要向我们展示的 while (1)循环内、您有3个 DataPut 命令、顺序为:0x41、0x0A、0x00。 但示波器捕获仅显示0x41、0x00。 您是否已从该过程中删除0x0A? 好奇、因为代码与捕获不匹配...
    2. 应使用映射命令而不是 ROM 命令。 在我们更新 DriverLib 时更新映射命令、以反映自 ROM API 完成以来已更新的函数、从而使所有 API 都使用"最新且最出色"、即"错误修复"API。
    3. 通常建议使用 DriverLib、而不是直接对 CS 进行寄存器操作。 总体经验法则、虽然您的 CS 信号看起来正常、但我认为现在保持这一状态没有问题。

    此外、我稍微编辑了您的代码帖子、以便使用语法 Highlighter 进行阅读。 将来、您可以使用 RTF 格式、然后通过查找< />的徽标从工具栏中选择语法 Highlighter 来发布类似帖子

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

    [引用用户="Ralph Jacobi">查看您的示波器捕获、我同意 CB1关于 Ch2蓝色- MISO 线似乎过早变得高的看法。 [/报价]

    嗯、我认为这是对问题的描述、而不是对问题根源的诊断。 结果而不是原因。

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请注意、供应商的 Ralph 和我都没有将(任何)原因/影响归因于该 MISO 信号的"过早出现"。 据报告,这是一种"观察",由于其(似乎很罕见),很可能值得进一步分析。

    我确实注意到、"所有"MCU SPI 时钟似乎一致-但更快的"时基"设置(以便我们可以直观地"捕捉 SPI 时钟干扰"(这可能是过早出现的干扰的原因)似乎"井然有序"。

    我还注意到、我的一些"测试请求"尚未收到回复、我犹豫是否要添加/处理更多内容、因为他们不在...