内容
1)开发包全名(tuyaos-subdev-bt_3.9.0_phy6222_ble_ble-common_1.0.1.tar)
2)问题现象(初始化硬件spi和dma后,使用spi发送,抓io口信号,没有任何信号出来。log发现发送后dma中断回调没有被调用)
3)附件内容(附件中是我写的spi dma初始化及发送代码)
【求助】【TuyaOS OS】使用 spi dma驱动oled,spi dma初始化后使用逻辑分析仪抓不到信号,初始化有问题。
【求助】【TuyaOS OS】使用 spi dma驱动oled,spi dma初始化后使用逻辑分析仪抓不到信号,初始化有问题。
- Attachments
-
- oled_spi_dma.h
- (3.06 KiB) Downloaded 566 times
-
- oled_spi_dma.c
- (3.89 KiB) Downloaded 672 times
Tags:
Re: 【求助】【TuyaOS OS】使用 spi dma驱动oled,spi dma初始化后使用逻辑分析仪抓不到信号,初始化有问题。
我就是参考的第一个链接写的。也定义了了DMAC_USE.
Re: 【求助】【TuyaOS OS】使用 spi dma驱动oled,spi dma初始化后使用逻辑分析仪抓不到信号,初始化有问题。
只是驱动OLED的话可以不使用DMA方式,不使用DMA方式的话有写好的例程,可以参考例程:TEST_CID_TX_SPI_DATA,可以配合Logic上位机进行测试基础收发功能
Re: 【求助】【TuyaOS OS】使用 spi dma驱动oled,spi dma初始化后使用逻辑分析仪抓不到信号,初始化有问题。
逻辑的院子 2023年 Nov 21日 16:59只是驱动OLED的话可以不使用DMA方式,不使用DMA方式的话有写好的例程,可以参考例程:TEST_CID_TX_SPI_DATA,可以配合Logic上位机进行测试基础收发功能
是可以直接使用软件模拟,但是后面我们也要用SPI DMA驱动WS2811,所以还是要调通。
Re: 【求助】【TuyaOS OS】使用 spi dma驱动oled,spi dma初始化后使用逻辑分析仪抓不到信号,初始化有问题。
逻辑的院子 2023年 Nov 21日 16:59只是驱动OLED的话可以不使用DMA方式,不使用DMA方式的话有写好的例程,可以参考例程:TEST_CID_TX_SPI_DATA,可以配合Logic上位机进行测试基础收发功能
用这个测试是可以抓到信号,数据也是对的
但是加上DMA就不行。请帮忙查一下看看,我对比了您给的参考链接,我初始化是一样写的,就是发送按照自己的发送修改了下。
Re: 【求助】【TuyaOS OS】使用 spi dma驱动oled,spi dma初始化后使用逻辑分析仪抓不到信号,初始化有问题。
这里初始化好像有问题,但我没发现问题
Code: Select all
/* spi init 这样初始化SPI没输出*/
hal_spi_t sg_spim;
spi_Cfg_t sg_spim_cfg;
sg_spim.spi_index = (SPI_INDEX_e)SPI0;
hal_spi_init(sg_spim.spi_index);
sg_spim_cfg.sclk_pin = P31;
//sg_spim_cfg.ssn_pin;
sg_spim_cfg.MOSI = P20;
//sg_spim_cfg.MISO;
sg_spim_cfg.baudrate = 500000;
sg_spim_cfg.spi_tmod = SPI_TXD;
sg_spim_cfg.spi_scmod= SPI_MODE0;/* 相位极性设置*/
sg_spim_cfg.spi_dfsmod = SPI_1BYTE;
#if DMAC_USE
//sg_spim_cfg.dma_tx_enable = 1;
//sg_spim_cfg.dma_rx_enable;
#endif
sg_spim_cfg.int_mode = FALSE;
sg_spim_cfg.force_cs = TRUE;
sg_spim_cfg.evt_handler = NULL;
ret = hal_spi_bus_init(&sg_spim, sg_spim_cfg);
if(ret != OPRT_OK)
{
TAL_PR_ERR("oled spi hard eror!!!\r\n");
return ret;
}
/////////////////////////////////////////////////////////////////////////////////
Code: Select all
/* 这样初始化SPI发送正常*/
TUYA_SPI_BASE_CFG_T test_spi_cfg =
{
//.role =
.mode = TUYA_SPI_MODE0,
.type = TUYA_SPI_SOFT_TYPE,
.databits = TUYA_SPI_DATA_BIT8,
//.bitorder = ;
.freq_hz = 500000,
.spi_dma_flags = TRUE,
};
ret = tal_spi_init(0, &test_spi_cfg);
if(ret != OPRT_OK)
{
TAL_PR_ERR("oled spi hard eror!!!\r\n");
return ret;
}
错误的相当于我直接调用的hal底层,结果spi没输出,但是使用tkl层就是可以的。
Re: 【求助】【TuyaOS OS】使用 spi dma驱动oled,spi dma初始化后使用逻辑分析仪抓不到信号,初始化有问题。
感谢,我调通了,我先在奉加上面调通又移植过来就可以了。然后发现直接调用hal库,DMA没有回调,我检查了后发现是底层
spi.c->config_dma_channel4spitx()中的cfgc.enable_int参数默认给的false,然后在hal_dma_config_channel(DMA_CH_0,&cfgc)
中就没有打开dma中断。目前我直接在底层改成true了,目前测试正常。请帮我确认下这里的中断,谢谢。