MSP430的CAN通信发送

1. 电路图如下,RE是接收使能,DE是发送使能,看图的话,这个CAN只支持半双工

 

2. 使用MSP430F149,以下代码只有发送,其实用的是串口

 1 #include  <msp430x14x.h>
 2 
 3 #define DRE_out     P3DIR |= BIT3     //连接485芯片的DE,RE端口的IO设置为输出状态
 4 #define DE          P3OUT |= BIT3     //设置485芯片处于发送状态 
 5 #define RE          P3OUT &= ~BIT3    //设置485芯片处于接收状态
 6 
 7 void Set_UART1(void);
 8 
 9 /****************主函数****************/
10 void main(void)
11 {
12   
13     WDTCTL = WDTPW + WDTHOLD;                 //关闭看门狗
14     P6DIR |= BIT2;P6OUT |= BIT2;              //关闭电平转换
15     DRE_out;
16     DE;
17     Set_UART1();
18     
19     while (1)
20     {
21         TXBUF1 = 0xaa; 
22         while(!(IFG2 & UTXIFG1));               //等待发送结束 
23         IFG2 &= ~UTXIFG1;
24     }
25 }
26 /*******************************************
27 函数名称:Set_UART1
28 功    能:设置MCU的UART1对应的寄存器
29 参    数:无
30 返回值  :无
31 ********************************************/
32 void Set_UART1(void)
33 {
34     P3SEL |= 0xC0;                            //将P3.6,P3.7选做UART1的通信端口
35     ME2 |= UTXE1 + URXE1;                     //使能USART1的TXD和RXD
36     UCTL1 |= CHAR;                            //选择8-bit字符
37     UTCTL1 |= SSEL0;                          //驱动时钟选择ACLK
38     UBR01 = 0x0D;                             //波特率2400
39     UBR11 = 0x00;
40     UMCTL1 = 0x6B;                            //调整
41     UCTL1 &= ~SWRST;                          //初始化UART状态机
42 }
posted @ 2017-12-20 22:00  429512065  阅读(398)  评论(0编辑  收藏  举报