置位操作

[复制链接]
1191|15
 楼主| liliang9554 发表于 2018-8-13 11:27 | 显示全部楼层 |阅读模式
pi, GPIO, IO, gp, spi
我现在两个MCU,MCU1用3个GPIO模拟SPI作为主设备,430做为从设备.我看了一个TI例程,其中的SPI中断部分是这样的:
进入中断->判断是否可以发送数据("否"继续等待,"是"的话就把要发的数据放进发送缓冲区)->接收来自主设备的数据->退出.
我先在从设备要给主设备发送数据的话通过置第4个GPIO4告诉主设备,主设备检测GPIO4为高就来读,那么GPIO4的置位操作应该放在哪一步
午夜粪车 发表于 2018-8-13 14:32 | 显示全部楼层
你试的怎样呢
 楼主| liliang9554 发表于 2018-8-13 14:34 | 显示全部楼层

如果放在该中断程序里,主设备不会发出时钟信号,程序也就不会进入中断
zhaoxqi 发表于 2018-8-13 14:36 | 显示全部楼层
放在外面呢
 楼主| liliang9554 发表于 2018-8-13 14:39 | 显示全部楼层
主设备读到的数据会发生错误
spark周 发表于 2018-8-13 14:43 | 显示全部楼层

主设备从第一个时钟下降沿开始读数据.请问有什么好的处理办法.
zhanghqi 发表于 2018-8-13 14:45 | 显示全部楼层

没有例程吗
wyjie 发表于 2018-8-13 14:49 | 显示全部楼层

TI例程如下:

#pragma vector=USCI_A0_VECTOR
__interrupt void USCI_A0_ISR (void)
{
     switch (__even_in_range(UCA0IV,4)){
         //Vector 2 - RXIFG
         case 2:
             //USCI_A0 TX buffer ready?
             while (!SPI_getInterruptStatus(__MSP430_BASEADDRESS_USCI_A0__,
                        SPI_TRANSMIT_INTERRUPT
                        )) ;

            //Transmit data to master
             SPI_transmitData(__MSP430_BASEADDRESS_USCI_A0__,
             transmitData
             );

            //Receive data from master
             receiveData = SPI_receiveData(__MSP430_BASEADDRESS_USCI_A0__);

            //Increment data to be transmitted
             transmitData++;

            break;

        default: break;
     }
jiaxw 发表于 2018-8-13 14:52 | 显示全部楼层
spi是通过可以通过地址来识别的吧?
shimx 发表于 2018-8-13 14:57 | 显示全部楼层

你的io口置位木有必要的吧。
zhanghqi 发表于 2018-8-13 14:59 | 显示全部楼层
置位操作的还是要多注意的。
你为什么不用中断操作呢
中断的设计能够保证相应及时一些。
jlyuan 发表于 2018-8-13 15:02 | 显示全部楼层
这样的还是通过串口进行发送数据
串口的设置比这个简单,没有主从一说。
 楼主| liliang9554 发表于 2018-8-13 15:06 | 显示全部楼层

嗯,预料中的结果,先结贴吧,多谢大家啦
Rospiers 发表于 2018-8-20 12:14 | 显示全部楼层
为什么不用中断?
CaLipton 发表于 2018-8-23 16:02 | 显示全部楼层
主设备从第一个时钟下降沿开始读数据.请问有什么好的处理办法.

不能用下降沿捕获的方法吗
baimiaocun2015 发表于 2018-8-23 22:18 | 显示全部楼层
这不是简单的GPIO寄存器的设计的么
您需要登录后才可以回帖 登录 | 注册

本版积分规则

950

主题

11568

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部