|
本帖最后由 CodeMonkey 于 2013-1-23 11:28 编辑
我现在的错误是,MISO悬空,也会有信号.
- #include <msp430.h>
- void SPIInit(){
- P1OUT = 0x00; // P1重置
- P1DIR |= BIT0 + BIT3; // 状态灯和从机选择位
- P1SEL = BIT1 + BIT2 + BIT4;
- P1SEL2 = BIT1 + BIT2 + BIT4; //SOMI SIMO SPI_CLK
- UCA0CTL0 |= UCMSB + UCMST + UCSYNC;
- /*
- * EN28J60 时序
- * CS Low 片选
- * SCK Low 不活跃
- * 上升沿输入,下降沿输出.
- * MSB 优先
- * MSP430 主机模式
- * UCSYNC 同步模式
- */
- UCA0CTL1 |= UCSSEL_1;
- UCA0BR0 |= 0x02;
- UCA0BR1 = 0x00;//发送波特率
- UCA0MCTL = 0x00; // 不调制
- UCA0CTL1 &= ~UCSWRST; // USCI 设置完成
- IE2 |= UCA0RXIE; // 开启接收中断
- }
- void SysInit(){
- DCOCTL = 0x00;
- BCSCTL1 = XT2OFF + DIVA_3;
- BCSCTL2 = DIVM_3+DIVS_3;
- BCSCTL3 = 0x00;
- WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗
- }
- void SendData(unsigned char d){
- P1DIR |= BIT5; // 片选
- P1OUT |= BIT5;
- P1OUT &= ~BIT5;
- UCA0TXBUF = d;
- P1OUT |= BIT5;
- }
- int main(void)
- {
- SysInit();
- SPIInit();
- SendData(0xff);
- __bis_SR_register(GIE); // 开启中断,CPU不休眠.
- }
- #pragma vector=USCIAB0RX_VECTOR
- __interrupt void USCIA0RX_ISR(void)
- {
- volatile unsigned int i;
- while (!(IFG2 & UCA0TXIFG)); // 即使需要接收数据,也要等待发送完成
- if (UCA0RXBUF == 0x05) // 比较数据,如果返回0xaa,就是发送成功.
- P1OUT |= BIT0; // 正确,亮灯'
- else
- P1OUT &= ~BIT0; // 错误,不亮灯
- }
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|