最近要把smart210模式的板子改做从模式,自己写了驱动程序。可是收到的数据是乱的,而且发现把内部时钟CLOCK_GATE_IP3关了就收不到数据。从模式不应该是靠外部时钟的吗?怎么会这样。我自己用GPIO模拟了SPI主设备向从设备发数据还是错的。原来的主设备是另一个板子,用示波器双通道观测其时钟与数据波形,都是对的。怎么样初始化SPI为从设备?
这是代码:求指导下是怎么回事儿
static int reg_init()
78 {
79 printk("Begin init...\n");
80 //设置GPIO
81 GPBCON &= 0XFFFF0000;
82 GPBCON |= 0X00002222;
83 //GPEUP 设置;全部disable
84 GPBUP &= ~(0xff << 0);
85 //GPBDAT 设置位0
86 GPBDAT &= ~(0xff << 0);
87 CLK_GATE_IP3 = (1 << 12);
88 CH_CFG0 = ((0<<6) | (1 << 4) | (1 << 3) | (1 << 2) | (1 << 1) | (1 << 0));
89 //CLK_CFG0 |= (1<<9)|(0<<8);
90 MODE_CFG0 &= 0;
91 MODE_CFG0 = ((0x0 << 29) | (0x0 << 19) | (0x0 << 17) | (0 << 11) | (0 << 5) | (0 << 2) | (0 << 1) | (0 << 0)); //fifo 接收> 数据100字节,就产生中断
92 //CS_REG0 = 0x2;
93 SPI_INT_EN0 |= (1 << 1);//打开RXFIFO中断
94 return 0;
|