请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:CC3220SF-LAUNCHXL 主题中讨论的其他器件:CC3220SF、 CC3220SDK
我尝试将 SPI 通信与 MX25L6433F 连接、
CC3220SF 具有主设备。
从 设备- MX25L6433F 8MB 闪存
我没有使用 Board_SPI_MASTER_READY 和 Board_SPI_SLAVE_READY。
仅使用 SPI_CS、SPI_MOSI、SPI_MISO、SPI_CLK 板提及 SPI_CS 此引脚自动处理(或)我需要手动处理?
我正在尝试读取 MX25L6433F 中的读取识别(命令9F)表、它将返回 1字节的制造商 ID、后跟2字节的器件 ID、但我没有收到任何内容?
/*
=== spimaster.c ====
*/
#include
#include
#include
#include
/* POSIX 头文件*/
#include
#include
#include
/*驱动程序头文件*/
#include
#include
#include
/*示例/板头文件*/
#include "Board.h"
#define THREADSTACKSIZE (1024)
#define SPI_MSG_LENGTH (1)
#define MASTER_MSG ("Hello from master、msg#:")
#define MAX_LOOP (10)
静态 Display_Handle 显示;
unsigned char masterRxBuffer[5];
unsigned char masterTxBuffer[SPI_MSG_LENG]={0x9F};
//在从器件准备好传输前阻止主器件的信号量*
/ SEM_t masterSem;
*=== masterThread ======
*主器件 SPI 在向从器件发送消息的同时从
从器件接收*消息。
//
void * masterThread (void * arg0)
{
SPI_Handle 主 Spi;
SPI_Params Parspiams;
SPI_Transaction 事务;
uint32_t 一;
布尔 转让;
内部32_t 状态;
/*将 SPI 作为主器件打开(默认)*/
SPI_Params_init (&spiParams);
spiParams.frameFormat = SPI_POL0_PHA0;
spiParams.mode = SPI_MASTER;
spiParams.transferMode = SPI_MODE_BLOCKING;
masterSpi = SPI_open (Board_SPI_master、&spiParams);
if (masterSpi == NULL){
Display_printf (display、0、0、"初始化主器件 SPI\n"时出错);
while (1);
}
否则{
display_printf (display、0、0、"Master SPI initialized");
}
/*将消息复制到发送缓冲区*/
strncpy ((char *) masterTxBuffer、master_MSG、SPI_MSG_LENGTH);
对于(I = 0;I < MAX_LOOP;I++){
/*
*等待从器件准备好传输;从器件将拉取
* Board_SPI_SLAVE_READY 低电平。
*
//sem_wait (&masterSem);
/*初始化主 SPI 事务结构*/
memset ((void *) masterRxBuffer、0、SPI_MSG_LENGTH);
transaction.count = SPI_MSG_length;
transaction.txBuf =(void *) masterTxBuffer;
transaction.rxBuf =(void *) masterRxBuffer;
/*切换用户 LED、指示正在进行 SPI 传输*/
GPIO_TOGGLE (Board_GPIO_LED1);
/*执行 SPI 传输*/
transferOK = SPI_transfer (masterSpi、事务);
if (transferOK){
Display_printf (display、0、0、"主设备已接收:%s"、masterRxBuffer);
}
否则{
display_printf (display、0、0、"主 SPI 传输失败");
}
/*在开始下一个 SPI 传输前睡眠一位*/
睡眠(3);
}
SPI_CLOSE (masterSpi);
/*示例完成-将引脚设置为已知状态*/
GPIO_DisableInt (Board_SPI_SLAVE_READY);
GPIO_setConfig (Board_SPI_SLAVE_READY、GPIO_CFG_OUTPUT | GPIO_CFG_OUT_LOW);
GPIO_WRITE (Board_SPI_MASTER_READY、0);
display_printf (display、0、0、"\nDone");
返回(NULL);
}
{
baseAddr = GSPI_base、
.intNum = INT_GSPI、
.intPriority =(~0)、
spiPRCM = PRCM_GSPI、
.csControl = SPI_HW_CTRL_CS、
csPolarity = SPI_CS_ACTIVELOW、
.pinMode = SPI_4PIN_MODE、
.TurboMode = SPI_Turbo_OFF、
scratchBufPtr =&spiCC3220SDMAscratchBuf[CC3220SF_LAUNCHXL_SPI1]、
defaultTxBufValue = 0、
.rxChannelIndex = UDMA_CH6_GSPI_RX、
txChannelIndex = UDMA_CH7_GSPI_TX、
.minDmaTransferSize = 10、
.mosipin = SPICC32XXDMA_PIN_07_MOSI、
MISO 引脚= SPICC32XXDMA_PIN_06_MISO、
clkPin = SPICC32XXDMA_PIN_05_CLK、
.csPin = SPICC32XXDMA_PIN_08_CS
}
为什么我不能在出错的地方读写?
谢谢你
瓦苏