器件型号:eZ430-RF2500T
大家好、
在前面、我应该说我对 MSP430完全陌生、我的许多假设可能是错误的、我希望您对我很有耐心。 我正在尝试构建一个应用程序、该应用程序将通过 SPI 从 AS4750P 获取数据、并将其发送到 PC 使用的端点。
但我从 Baby Steps 开始、我创建了一个"hello world"应用程序、只需闪烁引脚1.0上连接的 LED、就像一种魅力。 接下来、我想在 引脚3.0、3.1、3.2和3.3上启用 SPI 通信。 设置完成后、我创建了一个环路、该环路会缓慢地将引脚3.0 (芯片选择引脚)切换为高电平和低电平、以便我可以使用万用表跟踪它以验证它是否正常工作。 遗憾 的是、我无法看到分线板上的引脚17发生了任何变化、该引脚对应于器件上的引脚3.0。
您是否会想到查看我的代码并指出您可能看到的任何错误? 直接处理放置在寄存器中的位对我来说是相当新的、所以我确信这是问题所在!
#include #include "msp430x22x4.h" volatile unsigned int i; /** * prototype 语句 */** * main.c */ int main (void) { WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器 P1DIR |= 0x01; //将 P1.0设置为输出方向 // 设置 SPI // P3SEL |= 0x0C; // P3.2 & P3.3 USCI_B0选项选择 P3DIR |= 0x01; // P3.0输出方向 UCB0CTL0 |= UCMSB + UCMST + UCSYNC;// 3引脚、8位 SPI MSTR、MSB 优先、 UCB0CTL1 |= UCSSEL_2; // SMCLK 作为时钟源 UCB0BR0 = 0x02; UCB0BR1 = 0; UCB0CTL1 &= UCSWRST; //初始化 USCI 状态机 // 发送虚拟数据以激活 // P3OUT &= 0x01; //将 CS 拉为低电平以启用 SPI UCB0TXBUF = 0x00; //虚拟写入以启动 SPI P3OUT |= 0x01; //将 CS 拉为高电平以禁用 (;){的 SPI P1OUT ^= 0x01; //使用 XOR 切换 P1.0 P3OUT &= 0x01; //将 CS 拉至低电平以启用 SPI UCB0TXBUF = 0x00; //虚拟写入以启动 SPI P3OUT |= 0x01; //将 CS 拉为高电平以禁用 SPI I = 50000; //延迟 执行(i -); while (i!=0); }
提前感谢您提供的任何帮助!
James
编辑: 当我自己研究这个问题时、我想... 是否没有 TI 驱动程序可以让这一点变得更简单? 我认为我现在的做法被称为"位拆裂"、但感觉应该有某种类型的驱动程序、我可以包括让我访问预先编写的函数、例如 SPI_transfer (bla、bla、bla)。 这是我错的吗?