任务名称:zigbee节点控制ADAM4150
实验现象:通过zigbee节点上的节点控制ADAM
注意点:控制ADAM4150的波特率必须是9600,否则会出现错误
核心代码
1、寄存器配置
void init()
{
CLKCONCMD &=~0x40; //设置系统时钟源为32MHZ晶振
while(CLKCONSTA & 0x40); //等待晶振稳定为32M
CLKCONCMD &=~0x47; //设置系统主时钟频率为32MHz
PERCFG=0x00; //位置1,P0口
P0SEL =0x0c; //P0_2,P0_3用作串口
P2DIR =0xc0; //P0优先作为UART0
U0CSR |=0x80; //设置UART方式
U0GCR |=8; //设置波特率
U0BAUD |=59; //设置波特率 9600波特率
UTX0IF=0; //UART 0中断标志位初始置位0
}
2、串口发送
void SendString(char *Data,int len)
{
int i;
for(i=0;i<len;i++)
{
U0DBUF=*Data++;
while(UTX0IF==0);
UTX0IF=0;
}
}
3、ADAM4150数字量采集控制模块请求指令
开启:01 05 00 13 FF 00 7D FF
地址码 | 功能码 | 起始地址 | 起始地址 | 开 | 读取数量 | CRC低位 | CRC高位 |
01 | 05 | 00 | 13 | FF | 00 | 7D | FF |
关闭:01 05 00 13 00 00 3C 0F
地址码 | 功能码 | 起始地址 | 起始地址 | 关 | 读取数量 | CRC低位 | CRC高位 |
01 | 05 | 00 | 13 | 00 | 00 | 3C | 0F |
备注:
1、起始地址为10,对应ADAM4150的DO0,11对应DO1,以此类推
2、根据前面要求产生的:地址码、功能码、起始地址、起始地址、开/关、读取数量后,使用”Crc16校验位工具“可以算出CRC低位、CRC高位