Thread 中讨论的其他器件: MCF8316AEVM、 MOTORSTUDIO
工具/软件:
您好:
我设计了一个使用与 MCU 连接的 MCF8316C-Q1驱动器的定制电路板。 我开发了一个驱动程序、无需 CRC 即可通过 I2C 写入和读取寄存器。
我成功地做了以下:
- 读取寄存器内容
- 将新内容写入该寄存器
- 从寄存器读回该新值
因此、我相信我的实施是可以的。 但是、这种变化永远不会生效。 这意味着、它不会反映在芯片行为上。
硬件引脚如下所示:
- DRVOFF:低电平
- 速度:低(旨在用于 I2C 速度控制)
- 制动器:低电平
- DIR:低电平
- 报警:低
- 故障:高阻态
我手头有一个 MCF8316AEVM。 我将 I2C 线路连接到电路、并可以 通过 MotorStudio 按需控制驱动器。 因此、问题不在于硬件设计或焊接。 硬件引脚也设置正确。
对寄存器进行编程时是否缺少一些步骤? 我不打算写入 EEPROM、因此我不 使用 EEPROM 读取/写入位调用寄存器0x000000EA。 但是、是否有另一个位需要提出来才能应用该寄存器 ?
如果这样做有所帮助、下面是 我 I2C 写入函数的一个片段。 此处未显示地址字节的形式。
谢谢!
// Build 24 bits Control Word : datasheet 7.6.2.1 // WRITE operation: OP_R/W = 0b0; controlWord = 0b0 << 23; // CRC Disabled: CRC_EN = 0b0; controlWord |= 0b0 << 22; // Data Length is 32 bits: DLEN = 0b01 controlWord |= 0b01 << 20; // Memory Section: MEM_SEC = 0x0 // Memory Page: MEM_PAGE = 0x0 // Memory address : is casted on 12 bits controlWord |= address & 0xFFF; mfc8316c->i2cData.writeBuffer[0] = (controlWord >> 16) & 0xFF; mfc8316c->i2cData.writeBuffer[1] = (controlWord >> 8) & 0xFF; mfc8316c->i2cData.writeBuffer[2] = controlWord & 0xFF; // Build Data Word mfc8316c->i2cData.writeBuffer[3] = (data >> 24) & 0xFF; mfc8316c->i2cData.writeBuffer[4] = (data >> 16) & 0xFF; mfc8316c->i2cData.writeBuffer[5] = (data >> 8) & 0xFF; mfc8316c->i2cData.writeBuffer[6] = data & 0xFF; // Write I2C output buffer on the bus mfc8316c->i2cData.writeLength = 7;