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.

[参考译文] CC2652P:与 Winbond 外部闪存通信

Guru**** 2768735 points

Other Parts Discussed in Thread: CC2592

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/977378/cc2652p-communicate-with-winbond-external-flash

器件型号:CC2652P
主题中讨论的其他器件:CC2592

您好!

我正在尝试从应用 中的外部闪存 Winbond W25X40CL 中从主器件 CC2592读取芯片 ID。
遵循 SPI 主器件示例和闪存数据表中的指令集。 我在应用中集成了示例代码、用于在外部闪存上读取/写入数据。

我在响应 Get chip id (0x90)命令时得到0。 如何成功读取/写入数据?

请在下面找到代码片段。

SPI_Handle 主 Spi;
SPI_Params Parspiams;
SPI_Transaction 事务;
布尔 转让;

/*将 SPI 作为主器件打开(默认)*/

spi_init();
GPIO_setConfig (CONFIG_GPIO_1、1);

SPI_Params_init (&spiParams);
spiParams.frameFormat = SPI_POL0_PHA1;
spiParams.bitrate = 4000000;
spiParams.mode = SPI_MASTER;

masterSpi = SPI_open (CONFIG_SPI_0、&spiParams);
if (masterSpi == NULL){
debug_UART_write_str ("初始化主器件 SPI\n"时出错);
while (1);
}
否则{
debug_UART_write_str ("已初始化主 SPI \n");
}

masterTxBuffer[0]= 0x90;
masterTxBuffer[1]= 0x00;
masterTxBuffer[2]= 0x00;
masterTxBuffer[3]= 0x00;

transaction.count = 4;
transaction.txBuf =(void *) masterTxBuffer;
transaction.rxBuf =(void *) masterRxBuffer;

GPIO_WRITE (CONFIG_GPIO_1、0);

/*执行 SPI 传输*/
transferOK = SPI_transfer (masterSpi、事务);
if (transferOK){
debug_UART_write_str ("SPI status =%d\n"、transaction.status);
if (transaction.rxBuf!=空)
DEBUT_UART_WRITE_STr ("接收到的主设备:%02x\n"、masterRxBuffer[0]);
其他
debug_UART_write_str ("RX buff is NULL");
}
否则{
debug_UART_write_str ("unsuccessful master SPI transfer");
}

GPIO_WRITE (CONFIG_GPIO_1、1); 

此致、
Ankit S

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

    您好、Ankit、

    这似乎是第三方 W25X40CL 的预期 SPI 数据包格式问题、请参考其数据表并将通信线路差异与逻辑分析仪进行比较。  常见错误包括缺少物理连接、不支持的比特率、错误的相位/极性或错误的加电/初始化序列。

    此致、
    Ryan