Thread 中讨论的其他器件:CC2650
工具/软件:TI-RTOS
尊敬的 TI 专家:
我正在尝试使用 CC650 LAUNCHXL 建立与 MFRC522 RFID 读取器的 SPI 连接。 CC2650充当主设备、RFID 充当从设备。
我查看了 LCD 示例、但看起来我缺少了一些东西、因为我的程序卡在 Hwi.c 的函数中
更改了 CC2650_LAUNCHXL.c 中的说明
BOARD_SPI0_CSn 从 PIN_DELOADD 更改为 IOID_11
我想使用引脚15作为复位引脚来复位 MFRC522、并按如下所示进行配置
我先打电话
PIN_init (BoardGpioInitTable);
我有以下定义
/*引脚驱动器手柄*/
静态 PIN_Handle pinHandle;
/* PIN_Config 表的全局存储器*/
静态 PIN_STATE 引脚状态;
PIN_Config pinTable[]={
Board_SPI0_CSn | PIN_GPIO_OUTP_EN | PIN_GPIO_HIGH | PIN_PushPull、
Board_DIO15 | PIN_GPIO_OUTP_EN | PIN_GPIO_HIGH | PIN_PushPull、
PIN_TERMINATE
};
extern const SPI_Config SPI_config[];
SPI_Handle spiHandle;
然后、我通过执行以下操作来初始化 SPI
PIN_INIT (pinTable);-->以初始化我在 pinTable 中定义的引脚
pinHandle = PIN_OPEN (&pinState、pinTable);
if (!pinHandle){
System_abort ("初始化电路板引脚时出错\n");
}
//启动 SPI
Board_initSPI();
SPI_Params spiParams;
SPI_Params_init (&spiParams);
spiParams.bitrate = 1000000;
spiParams.frameFormat = SPI_POL0_PHA0;
spiHandle = SPI_open (Board_SPI0、&spiParams);
我进一步启动一个类似这样的 SPI 事务
PIN_setOutputValue (pinHandle、Board_SPI0_CSn、0);//选择 SPI 芯片 MFRC522 *
无符号短整型 usLen=1;
REG=REG& 0x7E;
SPI_Transaction spiTransaction;
spiTransaction.arg =空;
spiTransaction.count = usLen;
spiTransaction.txBuf =(ptr) reg;
spiTransaction.rxBuf =空;
bool ret = SPI_transfer (spiHandle、&spiTransaction);
spiTransaction.arg =空;
spiTransaction.count = usLen;
spiTransaction.txBuf =(ptr)值;
spiTransaction.rxBuf =空;
RET = SPI_transfer (spiHandle、&spiTransaction);
// MSB =0用于写入。 LSB 不在地址中使用。 数据表第8.1.2.3节。
//(void) m_SPI.write (reg & 0x7E);
//(void) m_SPI.write (value);
PIN_setOutputValue (pinHandle、Board_SPI0_CSn、1);//发布 SPI 芯片 MFRC522 *
程序在 SPI 初始化期间或在初始化引脚时卡住... 当我暂停执行时、它会在 hwi.c 函数中向我显示一个 while 循环
/*如果没有插入异常处理程序,请在此处旋转*/
while (Hwi_excHandlerFunc = NULL){
;
}
我是否缺少初始化内容? 或者、我是否有 初始化 SPI 的过程错误? 或者是否错误地初始化引脚?
您能为我提供执行此操作的步骤吗?
我需要一个芯片选择引脚、可以在0和1之间切换
还有一个复位引脚(GPIO)
和标准 SPI。。 还是写入 SPI 不正确?
感谢你们的帮助!!!
谢谢!