查看: 2366|回复: 0
打印 上一主题 下一主题

ARM2410SPI通信主发从收

[复制链接]
跳转到指定楼层
沙发
发表于 2016-6-17 16:01:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/**********************************************************************
   太原工业学院机器人队         
   作者:   
   功能:iic双机通讯中的从属接收
**********************************************************************///
#include"../ucos-ii/includes.h"               /* uC/OS interface */
#include "../ucos-ii/add/osaddition.h"
#include "../inc/drivers.h"
#include "../inc/sys/lib.h"
#include "../inc/sys/spi.h"
#include "../inc/sys/gpio_usr.h"

#include <string.h>
#include <stdio.h>

void init()
{
   
       rGPEUP  |= 0xc000;                  //Pull-up disable
    rGPECON &= ~0xf0000000;
    rGPECON |= 0xa0000000;              //GPE15:IICSDA , GPE14:IICSCL
rIICCON = 0xaf;

    rIICADD  = 0x10;                    //2410 slave address = [7:1]
    rIICSTAT = 0x10;         //从属接受模式  //IIC bus data output enable(Rx/Tx)
   
}

void waitsame()
{
     while(!(rIICSTAT&0x4));    //检测接受到的与IICADD中的地址值是否匹配
      
        while(!(rIICCON&0x10)); //检测是否收到数据,不管是地址还是一般的数据
          rIICCON &=~(1<<4);    //恢复寄存器操作,不然主机不能发数据;
}
void restring(char *data,int len)
{
      int i;
      waitsame();      //匹配检测
     for(i=0;i<len;i++)         //连收数据
     {
          while(!(rIICCON&0x10));
             rIICCON &=~(1<<4);                        
          data = rIICDS;
         
           Uart_Printf(0,"the number is %d\n",data);
     }
   
}
void task2(int num)
{
    int j;
    char str2[]={1,1,1,1,1,1,1,1,1};
    for(j=0;j<num;j++)
        {
                restring(str2,9);
        }  
}

int main(void)
{
        INT32U ostimeget,p;
        int y;
        ARMTargetInit();  //串口的初始化及波特率设置,115200,9600,9600
     init();
   task2(2);
    return 0;
}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入中科因仑

本版积分规则

快速回复 返回顶部 返回列表