工具与软件:
您好!
我们在与 AFE7769D 通信时遇到问题。
我们使用 Agilex5 (Intel) CPU 作为主机。
我有如下问题。
- 电源、时钟
根据数据表、在 H/W 复位后、将进入 AFE7769D 上电复位模式。
为了正确地与 AFE7769D 通信(SPI)、我认为应首先正确地对 AFE7769D 进行复位和初始化。
对于端口初始化、应满足电源条件和参考时钟(提供给 AFE7769D)。
顺便说一下、这可能看起来很明显、但您能解释一下为什么 AFE7769D 的基准时钟输入很重要吗?
因为我的硬件工程师说基准时钟不工作。
已验证电源是否满足第7.3节建议运行条件中所述的条件。
是否还应该满足第7.1节"绝对最大额定值"中所述的功率条件? - SPI 模式
如果您查看 SDK 随附的库、会发现 SPI 写入/读取函数中的代码是空的。
(将其描述为"/* TBD:用户域*/"作为注释。)
似乎这是一个需要由库用户写入的器件(以匹配其器件)。//CAFE/Afe77xxDUser/Src/tiAfe77D_baseFunc.c //... TI_AFE_API_COMP uint8_t AFE77DFNP(afeSpiRawWrite)(AFE77D_INST_TYPE afeInst, uint16_t addr, uint8_t data) { afeLogDbg("WRITE: Address: 0x%X, data: 0x%X", addr, data); /* TBD: User domain */ uint8_t status = ftdi_writeReg(addr, data); // AFE77D_FUNC_EXEC(AFE77DFNP(afeWaitMs)(afeInst, 20); if (status == 0) return TI_AFE_RET_EXEC_PASS; else return TI_AFE_RET_EXEC_FAIL; } /** @brief AFE SPI read driver function. @details AFE SPI read driver function and returns the read value as pointer. The contents of this function should be replaced by host SPI driver function. @param afeInst AFE Instance of AFE77D_INST_TYPE type @param addr Address to be read from. @param readVal Pointer return of the value read. @return Returns if the function execution passed or failed. */ TI_AFE_API_COMP uint8_t AFE77DFNP(afeSpiRawRead)(AFE77D_INST_TYPE afeInst, uint16_t addr, uint8_t *readVal) { /* TBD: User domain */ *readVal = 0; // AFE77D_FUNC_EXEC(AFE77DFNP(afeWaitMs)(afeInst, 20); *readVal = ftdi_readReg(0x8000 | addr); afeLogDbg("READ: Address: 0X%X, Read Val: 0X%X", addr, *readVal); return TI_AFE_RET_EXEC_PASS; } //...
为了设置 SPI 通信、似乎需要更改 SPI 模式以匹配从器件、如下面的 URL 所示。
https://e2e.ti.com/support/amplifiers-group/amplifiers/f/amplifiers-forum/1338667/afe031-spi-communication-problem/5126881?tisearch=e2e-sitesearch&keymatch=AFE7%20spi%20lsb#5126881
https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1281553/afe881h1evm-spi-read-issue-with-afe-board?tisearch=e2e-sitesearch&keymatch=afe%2520spi%2520read#
在数据表中、我似乎需要使用1写入从器件、使用0读取从器件。
中的 main.c 文件。 串行外设接口(SPI)部分中对其进行了如下说明。Data is input into the device with the rising edge of SCCLK. Data is output from the device on the falling edge of SCLK. The SPI registers-except for global register GLOBAL0 and GLOBAL1 - are reset by writing a "1" to GLOBAL_SOFT_RESET in the GLOBAL0 register.
我想知道的是、从主器件写入时将 SPI 模式设置为1、从主器件读取时将 SPI 模式设置为0是否正确?
我正在使用以下 SPI 配置:
- SCLK:10MHz
- CS:低电平有效
- SPI 模式:1 (写入)、0 (读取)
-数据顺序: LSB 优先
-主设备: Agilex5 (Intel)
此致、
JUNG。