|
我用NRF52832驱动一个240*240的TFT彩屏。
SPI设置如下:
nrf_drv_spi_config_t spi_config = NRF_DRV_SPI_DEFAULT_CONFIG;
spi_config.ss_pin = SPI_SS_PIN;
spi_config.miso_pin = NRF_DRV_SPI_PIN_NOT_USED;
spi_config.mosi_pin = SPI_MOSI_PIN;
spi_config.sck_pin = SPI_SCK_PIN;
spi_config.frequency = NRF_DRV_SPI_FREQ_1M;
spi_config.mode = NRF_DRV_SPI_MODE_0;
spi_config.orc = 0xFF,
spi_config.irq_priority = USER_SPI_CONFIG_IRQ_PRIORITY_HIGH; //在定时器中使用,优先级要小于6
APP_ERROR_CHECK(nrf_drv_spi_init(&spi, &spi_config, spi_event_handler, NULL));
并使用软件定时器刷新屏幕。
/**@brief Function for initializing the timer. */
static void timer_init(void)
{
ret_code_t err_code = app_timer_init();
APP_ERROR_CHECK(err_code);
//创建一个定时,设置定时器模式
err_code = app_timer_create(&m_timer_lcd_id,
APP_TIMER_MODE_REPEATED,
Time_lcd_timeout_handler);
APP_ERROR_CHECK(err_code);
}
其中频率设置到1M以下的时候,屏幕都能正常点亮刷新,蓝牙协议栈也能正常工作,但是当频率设置到2M,4M,8M的时候,程序跑到定时
任务的时候,就出错了,DEBUG后,发现属于NRF_FAULT_ID_SD_ASSERT错误,SOFTDEVICE: ASSERTION FAILED
请问有其他人碰到类似SPI高频协议栈出错的情况吗?
|
|