完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
|
相关推荐
10个回答
|
|
你好,
MIBSPI相对于标准SPI来说,功能上差别不是很大,简单点说就是增加了一个buffer,同时支持transfer group的工作方式。同时MIBSPI可以工作在标准SPI的模式,他们的管脚定义都是一模一样的。 针对于你的应用,需要实现2个MCU进行通信,通信的数据时十几个字节,我建议你还是采用MIBSPI的工作方式。因为在这种大数据吞吐量的工作模式下,MIBSPI会比SPI的性能更好。 Ken BR, KEN |
|
|
|
Hi Liang,
MibSPI在标准SPI模式工作时,可以通过SPIDATA0来发送数据,但还是建议你使用SPIDATA1来发送,因为在SPIDATA1中可以配置一起数据格式。 在MibSPI模式下,与标准SPI相比,有一个传输组的概念( TG),也就是你可以事先配置好发送的传输组、接收的传输组,这样可以连续发送和接收多个数据,对于多字节的数据通讯很有帮助。此外,TG除了可以用软件也控制发送,还可以由硬件的一些事件来触发传输。另外,MibSPI还支持DMA。 更详细的说明,请参考TRM。 Regards, Jay |
|
|
|
小Qhhui 发表于 2018-6-21 01:27 多谢解答。 另,目前我在用标准SPI方式调试。关于SPI的“接收/发送中断”有些疑惑: 使用HalCoGen工具时,发现SPI2模块的中断使能TXINT和RXINT只能二者择其一,中断线可以自由选择Low Level/High Level。由此引起我对接收/发送中断的疑问。我的理解如下: 发送中断使能后,在TXINTFLG置1后产生中断,即TXBUF为空的时间点(=数据刚移到shift Register=移位操作前):在中断函数里将源数据写入DAT1; 接收中断使能后,在RXINTFLG置1后产生中断,即数据被移到SPIBUF的时间点(=移位操作后):在中断函数里将接收数据写入目标数据区。 以主机为例,虽然发送数据的同时也接收从机数据,但从时间上来看,主机的接收中断和发送中断产生的时间点应该是不同的,所以发送/接收中断可以选择同一条中断线,High Level或Low Level。 不知道上面的理解是否正确?那么,HalCoGen工具为什么只能二者择其一呢? 一般来讲,RXINT、TXINT和其他中断的中断线如何选择更合适?哪个为level 0,哪个为level 1? 多谢。 |
|
|
|
你好,请问怎样用两个mibspi通信,有没有例子啊 ,发我一份谢谢!
|
|
|
|
HalcoGen里好像有例程吧?而且它会自动生成一些基本函数的,可以参考。 |
|
|
|
我用的RM950的开发板,用mibspi与两个CPU通信时,发现数据一直不能发送成功。我是用halcogen生成的代码。 //master void main(void) [ /* USER CODE BEGIN (3) */ uint16 tx[10] = [1,2,3,4,5,6,7,8,9,10]; uint16 rx[10] = [0]; mibspiInit(); //mibspiGetData(mibspiREG5,0,&data[0]); //mibspiEnableLoopback(mibspiREG1,Analog_Lbk); mibspiSetData(mibspiREG5 0, tx); mibspiTransfer(mibspiREG5, 0); while(!(mibspiIsTransferComplete(mibspiREG5,0))); mibspiGetData(mibspiREG5,0,rx); while(1); /* USER CODE END */ ] //slave void main(void) [ /* USER CODE BEGIN (3) */ uint16 rx[10] = [0]; mibspiInit(); while(1)[ mibspiGetData(mibspiREG5,0,rx); ] while(1); /* USER CODE END */ ] 一直接收不到数据啊!!!!真急人,主要帮我看看slave的接收函数是否正确????????感激涕零!!!!!!!! |
|
|
|
bleupealike 发表于 2018-6-21 02:21 ron, salve端的函数不能单单只用一个接收函数。 另外需要加入mibspiSetData()和mibspiTransfer()。同时接收之前还需要加入类似于while(mibspiIsTransferComplete(mibspiREG1, 0)==1)的条件判断语句,不然接收端数据时不会成功的。 Ken BR, KEN |
|
|
|
lining870815844 发表于 2018-6-21 02:31 //master void main(void) [ /* USER CODE BEGIN (3) */ uint16 tx[8] = [0xAAAA,0xAAAA,0xAAAA,0xAAAA,0xAAAA]; uint16 rx[8] = [0]; mibspiInit(); mibspiSetData(mibspiREG5,0,tx); mibspiTransfer(mibspiREG5,0); while(mibspiIsTransferComplete(mibspiREG5,0) ==FALSE) [ ; ] mibspiGetData(mibspiREG5,0,rx); while(1); /* USER CODE END */ ] //slave void main(void) [ /* USER CODE BEGIN (3) */ uint16 tx[16] = [1,2,3,4,5,6,7]; uint16 rx[16] = [0]; mibspiInit(); mibspiSetData(mibspiREG5,0,tx); mibspiTransfer(mibspiREG5,0); while(mibspiIsTransferComplete(mibspiREG5,0)==FALSE )//让从等待 [ ; ] mibspiGetData(mibspiREG5,0,rx); while(1); /* USER CODE END */ ] 还是接收不到数据啊????急人,,,谢谢 |
|
|
|
Hi ron, 两个方面需要再确认一下: 1. 硬件连线方面,MOSI和MOSI相连,MISO和MISO相连,CS和CLK连好。另外注意CS具体选了哪根信号线,在主机和从机相应的寄存器里面都是设置对的CS信号。 2. 主机从机发送和接收的数据长度要一致,注意编程的规范性。 希望这些对你有点帮助 ken BR, KEN |
|
|
|
lining870815844 发表于 2018-6-21 02:45 现在数据能接收成功,但是只RxBuf有数据,但是缓冲ram没数据? 怎样设置接收缓冲? 谢谢! |
|
|
|
只有小组成员才能发言,加入小组>>
802 浏览 0 评论
TMS320F28377D:新做了以377d为芯片的板子,上电后芯片复位引脚出现方波请问如何解决?
1993 浏览 0 评论
TPS55340通电后输入端保险丝烧断,芯片输入和GND之间短路
3746 浏览 4 评论
5107 浏览 0 评论
请问如何用DM368对RGB格式的图片数据进行编码生成JPEG格式图片?
1809 浏览 1 评论
CC3100BOOST使用CC3200lunchXL进行烧录
785浏览 2评论
837浏览 1评论
TMS320F28034: 利用C2prog通过SCI给TMS320F28034烧录程序,出现错误提示:Bootloading... failed (invalid echo)!
823浏览 1评论
求DLPC350 Programmer’s Guide User's Guide 中文版说明书
1294浏览 1评论
1882浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-7-24 10:37 , Processed in 0.851836 second(s), Total 65, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号