打印

GPIO4的置位操作应该放在哪一步

[复制链接]
1966|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liliang9554|  楼主 | 2013-9-15 16:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我现在两个MCU,MCU1用3个GPIO模拟SPI作为主设备,430做为从设备.我看了一个TI例程,其中的SPI中断部分是这样的:
进入中断->判断是否可以发送数据("否"继续等待,"是"的话就把要发的数据放进发送缓冲区)->接收来自主设备的数据->退出.
我先在从设备要给主设备发送数据的话通过置第4个GPIO4告诉主设备,主设备检测GPIO4为高就来读,那么GPIO4的置位操作应该放在哪一步

相关帖子

沙发
午夜粪车| | 2013-9-15 16:36 | 只看该作者
你试的怎样呢

使用特权

评论回复
板凳
liliang9554|  楼主 | 2013-9-15 16:38 | 只看该作者
如果放在该中断程序里,主设备不会发出时钟信号,程序也就不会进入中断

使用特权

评论回复
地板
zhaoxqi| | 2013-9-15 16:38 | 只看该作者
放在外面呢

使用特权

评论回复
5
liliang9554|  楼主 | 2013-9-15 16:40 | 只看该作者
主设备读到的数据会发生错误

使用特权

评论回复
6
liliang9554|  楼主 | 2013-9-15 16:40 | 只看该作者
主设备从第一个时钟下降沿开始读数据.请问有什么好的处理办法.

使用特权

评论回复
7
zhanghqi| | 2013-9-15 16:41 | 只看该作者
没有例程吗

使用特权

评论回复
8
wyjie| | 2013-9-15 16:42 | 只看该作者
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;
     }

使用特权

评论回复
9
liliang9554|  楼主 | 2013-9-15 16:43 | 只看该作者
我看看,多谢

使用特权

评论回复
10
liliang9554|  楼主 | 2013-9-15 16:43 | 只看该作者
先结贴了,周末愉快

使用特权

评论回复
11
mmbs| | 2013-9-15 23:22 | 只看该作者
spi是通过可以通过地址来识别的吧?

使用特权

评论回复
12
mmbs| | 2013-9-15 23:23 | 只看该作者
你的io口置位木有必要的吧。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

950

主题

11568

帖子

6

粉丝