完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在尝试改变 MODE_CTRL 寄存器以将 TLE9255WLC 设置为正常模式。 为此,我运行了下面提到的命令。 我尝试了原帖中张贴的查看解决方案,但无法让 CAN 正常工作。 我试图复制这样一条命令"spi -s 1 0x8108 2"("spi -s < msg len [byte]>" ),但我无法将 CAN 收发器更改为正常模式。 是否需要添加额外代码才能将 CAN 设置为正常模式?
我的代码: uint32 spiTxBuffer[1]; uint32 spiRxBuffer[1]; IfxQspi_SpiMaster_Channel spiMasterChannel; Ifx_read_write(0x8108); // 为 MODE_CTRL 设置值 0x08。 uint32 Ifx_read_write(uint32发送数据) { spiTxBuffer[0] = send_data; 当(IfxQspi_SpiMaster_getStatus( spiMasterChannel) == SpiIf_Status_busy) {}; IfxQspi_SpiMaster_exchange( spiMasterChannel, spiTxBuffer[0], spiRxBuffer[0], 1); /* 我们等待从 Qspi*/ 当(IfxQspi_SpiMaster_getStatus( spiMasterChannel) == SpiIf_Status_busy) {}; 返回(spiRxBuffer[0]); } |
|
相关推荐
2个回答
|
|
首先,您提到的命令"spi -s 1 0x8108 2" 表明,您需要通过 SPI 接口发送一个 2 字节的信息,其中第一个字节是寄存器地址 (0x81),第二个字节是要写入该寄存器的值 (0x08)。
在你的代码中,你使用 Ifx_read_write 函数通过 SPI 接口发送数值 0x8108。 但是,该函数似乎只发送了一个字节(0x8108),而不是所需的 2 字节信息。 要解决这个问题,可能需要修改 Ifx_read_write 函数,以发送 2 字节信息。 一种可能的方法是修改 spiTxBuffer,将寄存器地址和值分开保存,例如: uint32 spiTxBuffer[2]; uint32 spiRxBuffer[2]; spiTxBuffer[0] = 0x81; // 寄存器地址 spiTxBuffer[1] = 0x08; // 要写入的值 while (IfxQspi_SpiMaster_getStatus( spiMasterChannel) == SpiIf_Status_busy) {}; IfxQspi_SpiMaster_exchange( spiMasterChannel, spiTxBuffer, spiRxBuffer, 2); 这样,就可以通过 SPI 接口发送正确的 2 字节信息,从而将 MODE_CTRL 寄存器设置为所需值。 另一个可能的问题是 SPI 配置或 spiMasterChannel 变量的初始化。 在尝试写入 MODE_CTRL 寄存器之前,请确保 SPI 接口已正确配置和初始化。 |
|
|
|
要将TLE9255WLC设置为正常模式,您需要正确配置MODE_CTRL寄存器。根据TLE9255WLC的数据手册,MODE_CTRL寄存器的位定义如下:
- bit 7: 0 = 正常模式,1 = 待机模式 - bit 6: 0 = 正常模式,1 = 睡眠模式 - bit 5: 0 = 正常模式,1 = 电源关断模式 要将TLE9255WLC设置为正常模式,您需要将MODE_CTRL寄存器的所有位设置为0。以下是修改后的代码: ```c #include "IfxQspi.h" uint32 spiTxBuffer[1]; uint32 spiRxBuffer[1]; IfxQspi_SpiMaster_Channel spiMasterChannel; int main(void) { // 初始化SPI和TLE9255WLC // ... // 设置MODE_CTRL寄存器为正常模式 spiTxBuffer[0] = 0x0000; // 所有位都设置为0 IfxQspi_writeRead(&spiMasterChannel, spiTxBuffer, spiRxBuffer, 2); // 检查是否成功设置为正常模式 if (spiRxBuffer[0] == 0x0000) { // 成功设置为正常模式 } else { // 设置失败,处理错误 } // 其他代码 // ... return 0; } ``` 请注意,您需要根据您的硬件和软件环境进行适当的初始化和配置。此外,确保您的SPI通信设置正确,包括时钟速率、数据位长度等。如果仍然无法将CAN收发器设置为正常模式,请检查硬件连接和电源供应是否正常。 |
|
|
|
只有小组成员才能发言,加入小组>>
TLE9879_BLDC电机启动需要用手拨一下才能转动,怎么解决?
5387 浏览 2 评论
4072 浏览 9 评论
请问TLE5012B_E1000 启动后为什么位置不能正确获取
3590 浏览 9 评论
1203 浏览 8 评论
3491 浏览 7 评论
410浏览 2评论
243浏览 2评论
350浏览 2评论
TLE9879_BLDC电机启动需要用手拨一下才能转动,怎么解决?
5394浏览 2评论
如果是打开已有的dave工程,怎么查看这个工程选择的mcu型号?
413浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 16:58 , Processed in 0.819489 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号