3969|6

16

帖子

3

TA的资源

一粒金砂(初级)

楼主
 

MSP430+MCP2515 [复制链接]

      刚学430,用的是MSP430F6638,想用6638的硬件SPI控制MCP2515实现CAN通信,现在连读写MCP2515都做不到啊,下面是程序,不长,还希望大家帮忙指导一下,读出来的结果一直是0xFF,谢谢大家啊
#include
#include
#include "spitocan.h"
unsigned char test;
//延时
void delay(unsigned char num)
{
        unsigned char i;
    for (i = 0; i < num; i++);
}

void UCA1_SPI_Init(void)
{

        WDTCTL = WDTPW+WDTHOLD;        // Stop watchdog timer
        P8SEL|=BIT1+BIT2+BIT3+BIT4;//选择8.1:UCA1CLK,8.2UCA1SIMO,8.3:UCA1SOMI,8.4:CS
        P8DIR|=BIT1+BIT2+BIT4;//设定8.1,8.2,8.4端口输出,8.3输入
        P2SEL|=BIT0;//2.0:INT
        P2DIR&=~BIT0;//设定2.0端口输入
        UCA1CTL1|=UCSWRST;
        UCA1CTL0|=UCMST+UCSYNC+UCCKPL+UCMSB;//3线,8位SPI主机,同步
        UCA1CTL1|=UCSSEL_2;//SMCLK
        UCA1BR0=0x02;//波特率
        UCA1BR1=0;//波特率
        UCA1CTL1&=~UCSWRST;
        UCA1IE=UCRXIE;//使能中断
        //UCA1IE=UCTXIE;
        __delay_cycles(100);
}
unsigned char UCA1_SPI_WriteByte(unsigned char data)
{
        while(!(UCA1IFG&UCTXIFG));//等待发送缓冲器空
              UCA1TXBUF = data;
    while(!(UCA1IFG&UCRXIFG));//等待移位寄存器中断标志
                   UCA1RXBUF;
        return UCA1RXBUF;

}
unsigned char UCA1_SPI_ReadByte(void)
{
            unsigned char r_data;
        r_data = UCA1_SPI_WriteByte(0X00);
        return r_data;
}

void mcp2515_write_register(unsigned char addr, unsigned char data)
{
        MCP2515_CS_LOW;
        UCA1_SPI_WriteByte(MCP_WRITE); // 字节修改命令
        UCA1_SPI_WriteByte(addr); // 被修改的地址
        UCA1_SPI_WriteByte(data); // 数据
        MCP2515_CS_HIGH;
}

unsigned char mcp2515_read_register(unsigned char addr)
{
    unsigned char data;
    MCP2515_CS_LOW;
    UCA1_SPI_WriteByte(MCP_READ);   // 读
    UCA1_SPI_WriteByte(addr);       // 被读寄存器的地址
    data = UCA1_SPI_ReadByte();
    MCP2515_CS_HIGH;
    return data;
}

void MCP2515_RESET(void)
{
  MCP2515_CS_LOW;
  UCA1_SPI_WriteByte(MCP_RESET);//复位指令
  //delay(1000);
  MCP2515_CS_HIGH;
  //delay(1000);
}

void main(void)
{
        while(1)
        {
        UCA1_SPI_Init();
        MCP2515_RESET();//复位
        test=mcp2515_read_register(0x0E);//读CANSTAT状态
        }
}

最新回复

我最近忙着很多事呢,不好意思所以很少登论坛。。。你先把6638的SPI调好,能正常通信就好。  详情 回复 发表于 2014-5-30 17:47
 
点赞 关注

回复
举报

16

帖子

3

TA的资源

一粒金砂(初级)

沙发
 
不能沉,在线等,求助啊
 
 

回复

16

帖子

3

TA的资源

一粒金砂(初级)

板凳
 
为什么没人给点建议啊,求助啊,调半个月了
 
 
 

回复

2781

帖子

417

TA的资源

五彩晶圆(中级)

4
 
建议先使用模拟SPI时序读写

点评

嗯谢谢版主的建议啊我试试  详情 回复 发表于 2014-5-29 19:46
 
个人签名
 
 

回复

16

帖子

3

TA的资源

一粒金砂(初级)

5
 
qinkaiabc 发表于 2014-5-29 17:41
建议先使用模拟SPI时序读写

嗯谢谢版主的建议啊我试试
 
 
 

回复

396

帖子

5

TA的资源

纯净的硅(中级)

6
 
我最近忙着很多事呢,不好意思所以很少登论坛。。。你先把6638的SPI调好,能正常通信就好。

点评

嗯好的谢谢啊  详情 回复 发表于 2014-6-3 15:39
 
个人签名一别四五年,变化万千。https://home.eeworld.com.cn/static/image/smiley/comcom/5.gif[/img]
 
 

回复

16

帖子

3

TA的资源

一粒金砂(初级)

7
 
jqh_111 发表于 2014-5-30 17:47
我最近忙着很多事呢,不好意思所以很少登论坛。。。你先把6638的SPI调好,能正常通信就好。

嗯好的谢谢啊
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表