主题中讨论的其他器件: MSP430G2553
我正在进行一个项目、即将 AIS2IH 加速器与用于运动检测产品的 MSP430FR2532电路板连接起来。 我已经决定使用 SPI 总线接口来连接两个器件。 硬件连接如下所示:
MSP430 | AIS2IH | SPI 含义 |
P2.2 | CS | (特定于 AIS2IH?) |
P1.1/USB0CLK | SPC | SCLK |
P1.2/UCB0SIMO | sdi | 西莫 |
P1.3/UCB0SOMI | SDO | SOMI |
针对 MSP430电路板上的 SPI 设置、已完成以下操作:
1.根据 AIS2IH SPI 要求、将 UCB0CTL0设置为首先发送最高有效位
2。由于未激活时的时钟必须为高电平、因此时钟极性设置为高电平
3。同样、当没有 SPI 操作时、P2.2设置为高电平;对于 SPI 操作、P2.2设置为低电平
4.在将 P2.2设定为低电平之前、时钟被关闭。 我这样做是因为根据我的理解、无论 MSP430的时钟状态或电源模式如何、时钟都被设置为用于外设操作的有效状态(从 MSP430FR2xx 系列用户指南的第3.2.12节)
下面是我尝试创建的信号:
1) CS 是串行端口使能且由 MSP430控制。 它在传输开始时变为低电平、并在传输结束时恢复为高电平、
2) SPC 是串行端口时钟并且由 MSP430控制。 当 CS 为高电平(无传输)时、停止为高电平。
3) SDI 和 SDO 在 SPC 的下降沿被驱动、且应在 SPC 的上升沿被捕获。
4) 4) 读取寄存器和写入寄存器命令都以16个时钟脉冲或8的倍数(如果是多个读取/写入字节)完成。
5)第一个位(位0)从 CS 下降沿之后 SPC 的第一个下降沿开始、而最后 一个位在 CS 上升沿之前 SPC 的最后一个下降沿开始。
6) 位0:rw 位。 0表示写入、1表示读取
7) 位1-7:地址 AD (6:0)
8) 8)位8-15:在 SDI 线路中进行写入、在 SDO 线路中进行 读取
9) 9)所有数据均以 MSB 格式写入
在尝试使用 ais2ih 驱动程序来确定器件是否已连接时、我得到的消息是未获得预期输出。 我怀疑我可能没有正确发送信号。 ais2ih_device_id_get (&dev_ctx、&whoami);将 whoi 值指定为0x00
有人能帮助我解决此问题并向我指出正确的方向来连接这两个设备吗? 我在下面附上了我的代码:
|
读取发生在 platform_read 函数内:
1) 1)我根据 MSP430FR2xxx 系列用户指南中的第3.2.12节关闭 SMCLK。
2) 2) P2.2是控制位并设置为低电平以启动操作
3) 3)因为 SMCLK 已关闭、所以直到写入缓冲区时才会出现时钟下降沿
4)等待使用 while 循环、以确保 GPIO 有时间将 P2.2设置为低电平
此外、如果有人可以指向诸如 CLB 之类的任何 HAL 层、
HAL_SPI_TRANSMIT (Handle、、11000);//对于 STM 器件