英飞凌
直播中

贺楠

7年用户 963经验值
私信 关注

从XMC BSP运行HAL_SPI_Master应用程序,无法初始化spi怎么解决?

我正试图从 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)

李萍

2024-5-29 16:15:54
可以采取以下步骤来解决这个问题:

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);
```


举报

更多回帖

发帖
×
20
完善资料,
赚取积分