RP2040 C/C++ SDK中SPI函数与PGA2310音量控制IC的正确使用
关于PGA2310 SPI接口使用的问题
我正在开发一个使用PGA2310音量控制IC调节音频信号音量的项目,该芯片采用SPI接口,但无论如何尝试都无法正常工作。芯片需要通过SPI传输包含左右声道音量信息的16位数据。
我怀疑自己错误使用了SDK,代码存在问题,想确认:我是否正确设置和使用了SPI函数?
以下是我的代码:
/** * SPI interface for PGA2310 volume control ic */ #include "pico/stdlib.h" #include "hardware/spi.h" #include "pico/time.h" const int CS = 0; const int SDI = 1; const int SCLK = 2; const int LED_PIN16 = 16; const int LED_PIN25 = 25; uint16_t PGA2310(); uint16_t PGA2310() { int baud = 1600000; // SPI initialization spi_init(spi0, baud); spi_set_format(spi0, 16, SPI_CPOL_0 , SPI_CPHA_0, SPI_MSB_FIRST); // Sets SPI pins gpio_set_function(CS, GPIO_FUNC_SPI); gpio_set_function(SDI, GPIO_FUNC_SPI); gpio_set_function(SCLK, GPIO_FUNC_SPI); // Sets LED pins gpio_init(LED_PIN16); gpio_set_dir(LED_PIN16, GPIO_OUT); gpio_init(LED_PIN25); gpio_set_dir(LED_PIN25, GPIO_OUT); // Data to send to chip. only sending first 8 bits for right channel. // This is because I am currently just testing the output of the right channel uint16_t high = 255; uint16_t low = 100; // Test by toggling between high and low volume states with LED indicators while (true) { gpio_put(LED_PIN25, 1); spi_write16_blocking(spi0, &high, 1); sleep_ms(2000); gpio_put(LED_PIN25, 0); spi_write16_blocking(spi0, &low, 1); sleep_ms(2000); } }
我尝试过网上找到的多种RP2040 SDK SPI使用方法,也试过仅传输8位数据。如需更多信息,请告知。
内容的提问来源于stack exchange,提问作者Joel Austin
相关产品推荐
相关产品推荐

