完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正试图从 XMC BSP 运行 HAL_SPI_Master 应用程序。 但我无法初始化我的 spi。函数" cyhal_spi_init" 返回结果值 = 67246343。
我通过设备配置器 4.20 在 SCB 3 上配置了 spi 设备(内存)。 我的 main.c: #include "cyhal.h"#include "cybsp.h"#include "cy_retarget_io.h"/* SPI baud rate in Hz */#define SPI_FREQ_HZ (1000000UL)/* Delay of 1000ms between commands */#define CMD_TO_CMD_DELAY (1000UL)/* SPI transfer bits per frame */#define BITS_PER_FRAME (8)void handle_error(uint32_t status){ if (status != CY_RSLT_SUCCESS) { CY_ASSERT(0); }}int main(void){ cy_rslt_t result; uint8_t cmd_send = 0x9F; cyhal_spi_t mSPI; uint8_t rx_buffer[3] ={0xFF,0xFF,0xFF}; /* Initialize the device and board peripherals */ result = cybsp_init(); /* Board init failed. Stop program execution */ handle_error(result); /* Initialize retarget-io for uart logs */ result = cy_retarget_io_init(CYBSP_DEBUG_UART_TX, CYBSP_DEBUG_UART_RX, CY_RETARGET_IO_BAUDRATE); /* Retarget-io init failed. Stop program execution */ handle_error(result); /* x1b[2Jx1b[;H - ANSI ESC sequence for clear screen */ printf("x1b[2Jx1b[;H"); printf("*************** " "HAL: SPI Master " "*************** rnn"); printf("Configuring SPI master...rn"); /* Init SPI master */ result = cyhal_spi_init( mSPI,CYBSP_SPI_MOSI,CYBSP_SPI_MISO,CYBSP_SPI_CLK, CYBSP_SPI_CS,NULL,BITS_PER_FRAME, CYHAL_SPI_MODE_00_MSB,false); handle_error(result); /* Set the SPI baud rate */ result = cyhal_spi_set_frequency( mSPI, SPI_FREQ_HZ); handle_error(result); /* Enable interrupts */ __enable_irq(); for (;;) { /* Send the command packet to the slave */ //result = cyhal_spi_send( mSPI, cmd_send); result = cyhal_spi_transfer( mSPI, cmd_send, sizeof(cmd_send), rx_buffer, sizeof(rx_buffer), 0xFF); handle_error(result); /* Give delay between commands */ cyhal_system_delay_ms(CMD_TO_CMD_DELAY); }}/* [] END OF FILE */ |
|
相关推荐
1个回答
|
|
可以采取以下步骤来解决这个问题:
1. 确保您使用的是最新版本的 XMC BSP 和 Cy HAL SPI 库。如果不是,请更新到最新版本,因为问题可能已经在新版本中得到解决。 2. 检查您的硬件连接和配置。确保 SPI 引脚已正确连接,并且没有其他硬件问题。 3. 检查您的代码,确保您正确地调用了 cyhal_spi_init() 函数。以下是使用 cyhal_spi_init() 函数的一个示例: ```c cyhal_spi_t spi_obj; cyhal_gpio_t spi_miso; cyhal_gpio_t spi_mosi; cyhal_gpio_t spi_sck; cyhal_gpio_t spi_cs; // 初始化 SPI 对象 Cy_HAL_SPI_Init(&spi_obj, 3, 0, 0, 0); // 初始化 GPIO 引脚 cyhal_gpio_init(spi_miso, NC, P0_0, CYHAL_GPIO_DIR_B2B, false); cyhal_gpio_init(spi_mosi, NC, P0_1, CYHAL_GPIO_DIR_B2B, false); cyhal_gpio_init(spi_sck, NC, P0_2, CYHAL_GPIO_DIR_B2B, false); cyhal_gpio_init(spi_cs, NC, P0_3, CYHAL_GPIO_DIR_B2B, false); // 配置 SPI 对象 cyhal_spi_config_t spi_config; cyhal_spi_config_init(&spi_config, SPI_FREQ_HZ, CYHAL_SPI_MODE_MASTER, CYHAL_SPI_PHASE_MIDDLE, CYHAL_SPI_POLARITY_LOW, 8, 0); cyhal_spi_configure(&spi_obj, &spi_config); // 连接 GPIO 引脚到 SPI 对象 cyhal_spi_set_pins(&spi_obj, spi_sck, spi_miso, spi_mosi, spi_cs); ``` |
|
|
|
只有小组成员才能发言,加入小组>>
TLE9879_BLDC电机启动需要用手拨一下才能转动,怎么解决?
3819 浏览 2 评论
4021 浏览 9 评论
请问TLE5012B_E1000 启动后为什么位置不能正确获取
3513 浏览 9 评论
1149 浏览 8 评论
3435 浏览 7 评论
324浏览 2评论
187浏览 2评论
282浏览 2评论
TLE9879_BLDC电机启动需要用手拨一下才能转动,怎么解决?
3819浏览 2评论
如果是打开已有的dave工程,怎么查看这个工程选择的mcu型号?
333浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-28 18:08 , Processed in 0.749234 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号