完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
您好:
在用SPI DMA SLAVE 方式与设备传输时,大概率出现数据传输错误,感觉像是CLK不匹配导致。现在MASTER SPI CLK是12M,SLAVE方式时CLK 应该与MASTER同步。cc3200对时钟有什么要求么?需要连续时钟吗?有没有特殊的同步机制。下面是spi的初始化代码,麻烦帮忙看看有什么问题,谢谢。 MAP_SPIConfigSetExpClk(GSPI_BASE,MAP_PRCMPeripheralClockGet(PRCM_GSPI), SPI_IF_BIT_RATE,mode,SPI_SUB_MODE_3, (chip_select | SPI_4PIN_MODE | SPI_TURBO_OFF | SPI_CS_ACtiVELOW | SPI_WL_8)); MAP_SPIIntRegister(GSPI_BASE,interrupt_handler); MAP_SPIFIFOLevelSet(GSPI_BASE, 1, 1); MAP_SPIFIFOEnable(GSPI_BASE, SPI_RX_FIFO); MAP_SPIFIFOEnable(GSPI_BASE, SPI_TX_FIFO); MAP_SPIDmaEnable(GSPI_BASE,SPI_RX_DMA); MAP_SPIDmaEnable(GSPI_BASE,SPI_TX_DMA); MAP_SPIWordCountSet(GSPI_BASE, SPI_DMA_MAX_LENGTH); MAP_SPIIntEnable(GSPI_BASE, SPI_INT_EOW); MAP_SPIEnable(GSPI_BASE); SPI_DMA_MAX_LENGTH 为1024; Transfer的设置: MAP_SPIDisable(GSPI_BASE); UDMASetupTransfer(UDMA_CH30_GSPI_RX, UDMA_MODE_BASIC, dma_size, UDMA_SIZE_8, UDMA_ARB_1, (void *) (GSPI_BASE + MCSPI_O_RX0), UDMA_SRC_INC_NONE, rx, UDMA_DST_INC_8); UDMASetupTransfer(UDMA_CH31_GSPI_TX, UDMA_MODE_BASIC, dma_size, UDMA_SIZE_8, UDMA_ARB_1, tx, UDMA_SRC_INC_8, (void *) (GSPI_BASE + MCSPI_O_TX0), UDMA_DST_INC_NONE); MAP_SPIEnable(GSPI_BASE); |
|
相关推荐
4个回答
|
|
作为主机模式应该没有大问题吧?是全错误呢,还是偶尔错误。你降低一下CLK试试有没有改观。
其中TI给的有那个例程,看看有没有类似的例子,我知道有个主机模式的例子。没试过从机,最近重装没安装那个软件。 |
|
|
|
可以参考一个SPI DMA的例子,
https://github.com/severin-kacianka/cc3200_dma_spi_example/ cc3200_dma_spi_example Here are two examples that show how to use SPI with DMA and FIFO on the CC3200. I hope that they are a useful starting point for anyone, who wants to work on SPI and DMA in the future. The examples are compiling fine on Linux with gcc 4.9.3 from http://launchpad.net/gcc-arm-embedded. All you need to change is the path for the SDK in the Makefile. The hardware setup is similar to the SPI example in the SDK: just connect two CC3200 via cable (Pins GND, P05, P06, P07 and P08). I have set the following jumpers: J6, J7, J8. J9. J10, J11, J12, J13. simple_spi_transfer is an example of an SPI transfer without DMA and FIFO. The master sends a buffer to the slave, reads it back in the next transfers and verifies the checksums. transfer_1024_byte implements a simple SPI/DMA transfer that will transfer 1024 (or whatever DMA_SIZE is set to) bytes from the master to the slave and back. It then calculates the buffer's CRC checksum and (on the master) compares the send checksum to the received checksum. transfer_64k shows how to transfer a 64k buffer from the master to the slave and back again. windows contains a Makefile send to me by Matt van de Werken that also works using the Launchpad tools in a Cygwin enviroment |
|
|
|
潘涛12345 发表于 2018-6-21 02:11 谢谢,dma可以跑通,最后查出来是飞线干扰的问题 |
|
|
|
asa1253 发表于 2018-6-21 02:27 谢谢,dma可以跑通,最后查出来是飞线干扰的问题 |
|
|
|
只有小组成员才能发言,加入小组>>
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
684 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
600 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1055 浏览 1 评论
741 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
525 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
163浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
127浏览 14评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
127浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
123浏览 12评论
GD32F303RCT6配置PA4 ADC引脚,将PA2代替key功能,PA2连接时无法实现预期功能,为什么?
20浏览 10评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 11:19 , Processed in 0.769169 second(s), Total 54, Slave 47 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号