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 }