唾液酸苷酶阳性什么意思| 一什么面包| 身上长瘊子是什么原因| 胸痹是什么意思| 牙龈肿痛吃什么水果| 骨龄挂什么科| 高压低是什么原因引起的| 狐臭手术挂什么科室| 825是什么意思| 什么可以| 风热感冒 吃什么| 2022年五行属什么| 生气伤什么器官| 什么是创业板股票| 梅毒为什么会自愈| 隆鼻后吃什么消肿快| 低密度脂蛋白偏高是什么意思| 男宠是什么意思| 有福气是什么意思| 下嘴唇发麻什么病兆| 2004属什么生肖| 计算机二级什么时候查成绩| 前置胎盘需要注意什么| 血红蛋白偏低是什么原因| 小孩尿酸高是什么原因| 米诺地尔搽剂和米诺地尔酊有什么区别| 梦见自己大笑是什么意思| 阴道炎挂什么科| 为什么会乳糖不耐受| 黑裤子配什么颜色的鞋| 十指不沾阳春水是什么意思| 经常叹气是什么原因| 手指长倒刺是什么原因| 什么是牛黄| 小麦粉可以做什么吃的| 皮肤溃烂用什么药治愈最快| 吼不住是什么意思| 梅毒症状男有什么表现| 这是什么地方| 梦到甘蔗代表什么预兆| 属蛇的五行属什么| 黄山四绝指的是什么| 骨质疏松用什么药好| 蛇字五行属什么| 白玫瑰适合送什么人| 胆囊切除有什么后遗症| 肠阻塞有什么症状| 什么斗艳| dna倍体异常细胞是什么意思| 尿频尿急尿不尽吃什么药| 为什么吃芒果会过敏| 萨德是什么意思| 尿细菌高是什么原因| 外人是什么意思| 八卦中代表雷的卦象叫什么| 大腿内侧发黑是什么原因| 竹棉和纯棉有什么区别| t是什么火车| veromoda是什么牌子| 甲减是什么| 老鼠爱吃什么食物| 木芙蓉什么时候开花| 1991年属羊是什么命| 冲任失调是什么意思| 正月初十是什么星座| 面包是什么意思| 过意不去是什么意思| vk是什么| 排卵是什么意思| 号外是什么意思| 反弹是什么意思| 小孩一到晚上就发烧是什么原因| 故事梗概是什么意思| 耳浴10分钟什么意思| 偏头疼是什么原因| ip指的是什么| 避孕套和安全套有什么区别| 谷丙转氨酶是什么意思| 左耳发热是什么预兆| 今年的属相是什么生肖| min是什么单位| 瓜皮什么意思| 尿痛吃什么药效果最好| 四岁属什么生肖| 赟读什么| 菡字五行属什么| 手机什么时候发明的| 葡萄的茎属于什么茎| 隔离霜有什么作用| 右侧卵巢囊性结构是什么意思| 肾检查挂什么科| 一心向阳下一句是什么| 布衣是什么意思| 体寒是什么原因引起的| 减肥期间吃什么水果好| 西瓜有什么功效| 胸闷挂什么科| 糖吃多了有什么危害| 诺什么意思| nt检查什么| 心跳加速心慌吃什么药| 脚底脱皮用什么药膏| 云雾茶是什么茶| 苦瓜泡水喝有什么功效和作用| 奔走相告是什么意思| 念珠菌性阴道炎有什么症状| 滑肠是什么意思| 女生什么时候容易怀孕| 舌苔开裂是什么原因呢| 黄体破裂有什么症状| 9月26号是什么星座| 趴着睡觉有什么坏处| 无可奈何的笑是什么笑| 小乌龟死了有什么预兆| opo是奶粉里的什么成分| 专科学什么专业好就业| 属鸡今年要注意什么| 拉肚子什么原因造成的| 男性生殖长水泡是什么原因| 女人梦到火是什么预兆| 文定之喜是什么意思| 双鱼座上升星座是什么| 口诀是什么意思| 梅花手表属于什么档次| 科技馆里面有什么| 黑蚂蚁泡酒有什么功效| 生物包括什么| 海的尽头是什么| 狗怕什么| 无畏无惧是什么意思| 牙疼吃什么食物好得快| 嘴炮是什么意思| 口腔溃疡缺乏什么维生素| 鬼冢虎什么档次| 纯牛奶可以做什么美食| 为什么不建议光子嫩肤| 九月十二号是什么星座| 红霉素软膏有什么作用| nt和无创有什么区别| 1962年属虎的是什么命| 女命带驿马是什么意思| 慢性胃炎吃什么中成药| 乳腺3类是什么意思| 经期可以吃什么水果| 六月二号是什么星座| 小便次数多是什么原因| 煮花生放什么调料好吃| 地贫是什么意思| 什么玉最好有灵性养人| 什么水果泡酒最好| 乳腺结节和乳腺增生有什么区别| 操逼是什么感觉| 面部痉挛吃什么药| 什么叫非甾体抗炎药| 鼻子干燥吃什么中成药| 97年属什么生肖| 女人做梦哭醒预示什么| 小腿肌肉痛是什么原因| 大腿根部是什么部位| 左侧肋骨下方疼痛是什么原因| 名存实亡是什么意思| 移植是什么意思| 炉中火是什么意思| 便秘吃什么好| 乙型肝炎表面抗体高是什么意思| 百草霜是什么| 3月5日是什么纪念日| 肚子受凉吃什么药| 8月5日是什么星座| 土猪肉和普通猪肉有什么分别| 拔罐为什么会起水泡| 恨不相逢未嫁时什么意思| 梦见和老公吵架是什么意思| 为什么低烧比高烧可怕| 妄想什么意思| 吃避孕药会有什么副作用| model是什么牌子| 胆囊壁稍毛糙是什么意思| 什么药止痒效果最好| 大腿内侧痒是什么原因| 小肚子疼是什么原因女性| 罪对什么| 孤臣是什么意思| 沙拉是什么| 你算什么东西| 仪字五行属什么| 低血压吃什么好的最快女性| 河北有什么特产| 好麻吉是什么意思| 宝宝干咳吃什么药| 荷叶是什么的什么| 前胸贴后背是什么意思| 吉林有什么特产| cm是什么单位| joola是什么牌子| onemore是什么牌子| 什么是六道轮回| 梦见蛇挡路是什么意思| 叶酸买什么牌子的好| 什么的原野| 中学为体西学为用是什么意思| 什么是海市蜃楼| 感冒吃什么水果好| 夺魁是什么意思| 孕期血糖高有什么症状| 喝芝麻糊有什么好处| 对蚊子过敏是什么症状| 男人为什么喜欢大胸| 春光乍泄是什么意思| 笑靥什么意思| 1963属什么| 什么牌子的风扇好| qn是什么意思| 马蜂吃什么| 深圳到香港需要办理什么手续| 萎谢是什么意思| 乳腺增生乳腺结节吃什么药| 维生素d3什么时候吃最好| 胃炎吃什么药效果最好| 偏财代表什么| 钠低吃什么| 皮蛋吃多了有什么危害| 请节哀是什么意思| 儿童淋巴结肿大挂什么科| 吃什么可以提高记忆力| 养什么宠物好| 手为什么会脱皮| 举头三尺有神明是什么意思| 4朵玫瑰代表什么意思| 为什么明星都不戴黄金| 减肥可以吃什么菜| 持家是什么意思| 刺猬是什么动物| 浆糊是什么意思| 害怕是什么意思| 结婚送什么礼物最合适| 淋巴细胞百分比低是什么意思| 肾结石少吃什么食物| 什么是横纹肌溶解| 怀孕一个月什么症状| 为什么老是犯困想睡觉| 碎石后要注意些什么| 势如破竹是什么意思| 女人吃知了有什么好处| 肌电图主要检查什么病| 肺气不足吃什么中成药| 梦见自己买衣服是什么意思| 什么是遗憾| 号是什么| 消防队属于什么编制| 心律不齐房颤吃什么药| 糖尿病是什么| 变蛋是什么| 他叫什么名字| 无聊可以干什么| 天启是什么意思| 白细胞酯酶阳性是什么| 什么是大健康| 血压高什么原因| 统招生是什么意思| 嘴唇发乌是什么原因| 劝酒什么意思| 人为什么要工作| 孕妇吃什么钙片| 百度
打印

关于推进全市企业工资集体协商工作进展情况的调研

[复制链接]
1114|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
串口调试界面如下:
协议如下:
1、      此协议为半全工UART通讯,9600波特率,1位起始位,8位数据位,无奇偶校验,1位停止位;
上位面板为主机,电机驱动板为从机,主机和从机周期事件发送一帧数据,周期为100ms;
同一个命令主机必须发送三次及以上,以方便下位机接收命令进行校准。当通信检测超过2s未收到
信息时,从机会自动停机并报通信故障。
2、      面板向电机驱动板发送的一帧命令数据包包含如下信息:
起始码(1字节)+功能命令(CMD,1字节)+数据(DATA0,DATA1,2字节)+校验码(CHECKSUM,1字节)。
a.   空闲:不发数据时为高电平,收发双方为高电平。
b.   起始码: 0x5a
c.    校验:CHECKSUM  =  (STARTID + CMD +  DATA0  +  DATA1)。相加后的溢出位舍去。                  
  
起始码
  
功能命令CMD
DATA0
DATA1
CHECKSUM
备注
  
  
0x5a
BIT0-21表示启动电机;
  
        0表示停止电机,
  
        其他值表示保持当前状态不变。
  
  
BIT3:   清零故障。
  
  
0x00
  
  
0x02
  
  
0x5c
1、电机驱动板接收速度数据RPM=DATA1*256+DATA0.
  
2、当电机发生故障自动停机后,若想让电机重启,需要置位BIT3,清零电机故障信息后重新启动电机。
举例1:面板发送以1024RPM转速启动电机的指令数据帧为:      
0x5a,0x01,0x00,0x04,0x5f.
举例2:面板发送以1024RPM转速,清零故障信息重新启动电机的指令数据帧为:     
0x5a,0x09,0x00,0x04,0x67.
3、      电机向面板发送的命令数据格式:
起始码(1字节)+功能命令(CMD,1字节)+数据(DATA0-DATA6,7字节)+校验码(CHECKSUM,1字节)。
a.   空闲:不发数据时为高电平,收发双方为高电平。
b.   起始码: 0xa5
c.    校验:CHECKSUM  =  (STARTID+ CMD  +  DATA0  + DATA1+…..DATA6)。相加后的溢出位舍去。
d.   DATA0,DATA1,表示速度;DATA2,DATA3,表示故障;
DATA4,DATA5,DATA6为备用,用户可根据需要自行定义如电机电流、电压等信息。
                     
  
起始码
  
功能命令CMD
DATA0
DATA1
备注
  
  
0xa5
BIT0-1:0,表示电机工作正常。
  
         1,表示电机故障已自动停机。
  
  
  
0x00
  
  
0x02
  
  
DATA0,DATA1表示电机速度数据;RPM=DATA1*256+DATA0.
  
  
DATA2,DATA3表示故障信息;
  
DATA2.BIT0:表示峰值电流保护DATA2.BIT1:表示均值电流0保护DATA2.BIT2:表示均值电流1保护
  
DATA2.BIT3:表示过压保护
  
DATA2.BIT4:表示欠压保护DATA2.BIT5:表示过温保护DATA2.BIT6:表示缺相保护
  
DATA2.BIT7:表示堵转保护
  
DATA3.BIT0:表示硬件过流保护DATA3.BIT1:表示MCUID保护DATA3.BIT2:表示通讯故障保护
  
  
DATA4-DATA6预留
例3:当电机正常工作时,电机驱动板发出1024RPM转速的数据帧:         
0xa5,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0xa9,
例4:当电机欠压停机时,电机驱动板发出0RPM转速的数据帧:         
0xa5,0x01,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0xae,


部分代码如下:
//////////////////////////////////////////////////////////////////////////

//函数名称: void Usart_Config(u32 BaudRate)

//函数功能说名:串口初始化

//输入参数: 无

//输出参数: 无

//调用函数: 无

//完成时间:2025-08-04

//作者: Danny

///////////////////////////////////////////////////////////////
void Usart_Config(u32 BaudRate)
{
                UART_InitTypeDef UART_InitStruct;
       
                UART_StructInit(&UART_InitStruct);
                UART_InitStruct.BaudRate = BaudRate;
                UART_InitStruct.WordLength = UART_WORDLENGTH_8b;
                UART_InitStruct.StopBits = UART_STOPBITS_1b;
                UART_InitStruct.FirstSend = UART_FIRSTSEND_LSB;
                UART_InitStruct.ParityMode = UART_Parity_NO;
                UART_InitStruct.IRQEna = 0;
                UART_Init(UART0, &UART_InitStruct);

}
//////////////////////////////////////////////////////////////////////////

//函数名称: void ReceivedDataParsing(void)

//函数功能说明:接收数据解析

//输入参数:

//输出参数:

//调用函数: 无

//完成时间:2025-08-04

//作者: Danny

///////////////////////////////////////////////////////////////
void ReceivedDataParsing(void)  //接收解析数据,用户可以根据自行的协议将接受的数据解析
{
               
}


/* Local Variables----------------------------------------------------------*/
//////////////////////////////////////////////////////////////////////////

//函数名称: void Uart_RecieveCmd(void)

//函数功能说明:接收一帧固定长度数据,放在不小于500US的时间片中用于查询接收数据

//输入参数:

//输出参数:

//调用函数: ReceivedDataParsing(void)

//完成时间:2025-08-04

//作者: Danny

///////////////////////////////////////////////////////////////
void Uart_RecieveCmd(void)
{
          static u8 UartRxIndex;
                if(UART_IF & BIT1) //接收完成事件
                {
                                UART_IF = BIT1; //清除接收完成标志位
                          UART_Compnent.RecvTimeCnt = 0;
                                UART_Compnent.RecieveBuff[UART_Compnent.Rcv_Ptr++] = UART_ReadData(UART0);
                                if(UART_Compnent.RecieveBuff[RX_HEADER_ADDR] != RX_FRAME_HEADER_DATA)
                                {
                                                UART_Compnent.Rcv_Ptr = 0;
                                }
                                else
                                {
                                                        if(UART_Compnent.Rcv_Ptr >= RX_DATA_LENGTH)
                                                        {
                                                                        UART_Compnent.Rcv_Ptr =0;                                             //一帧数据接收完,接收指针清零
                                                                  UART_Compnent.CalcRxdCheakSum  = 0;                                   //验证校验和清零
                                                                  for(UartRxIndex = 0;UartRxIndex < RX_CHEAKSUM_A_ADDR;UartRxIndex++)   //验证校验和
                                                                        {
                                                                                        UART_Compnent.CalcRxdCheakSum += UART_Compnent.RecieveBuff[UartRxIndex];
                                                                        }
                                                                        if(UART_Compnent.CalcRxdCheakSum == UART_Compnent.RecieveBuff[RX_CHEAKSUM_A_ADDR])//校验码正确解析一帧数据
                                                                         {
                                                                                                if(UART_Compnent.RecDataCompFlag)                               //二次确认后接收命令信息
                                                                                                {                                                                                          
                                                                                                          ReceivedDataParsing();
                                                                                                }
                                                                                                UART_Compnent.RecDataCompFlag = 1;                                                                         
                                                                         }
                                                                         else
                                                                         {
                                                                                                UART_Compnent.RecDataCompFlag = 0;
                                                                         }                                                                         
                                                        }
                                }
                }                 
                if(UART_Compnent.RecvTimeCnt++ > RX_TIMEOUT_DIV)//长时间没接收到数据清零接收指针,用户可以在此加入通讯故障标志,表示长时间未和上位机取得通讯
                {
                                UART_Compnent.Rcv_Ptr = 0;
                          UART_Compnent.RecvTimeCnt = 0;

                }
}

//////////////////////////////////////////////////////////////////////////

//函数名称: void TxdDataProcessing(void)

//函数功能说明:发送数据处理,客户按自行协议增加返回数据

//输入参数:

//输出参数:

//调用函数: 无

//完成时间:2025-08-04

//作者: Danny

///////////////////////////////////////////////////////////////
void TxdDataProcessing(void)
{
      static u8 UartTxIndex;
                        UART_Compnent.SendBuff[TX_HEADER_ADDR] = TX_FRAME_HEADER_DATA;               
                        UART_Compnent.SendBuff[TX_MOTOR_STATE_ADDR] = UART_Compnent.Txd_State;
                       
                        UART_Compnent.CalcTxdCheakSum = 0;
                        for(UartTxIndex = 0;UartTxIndex < (TX_CHEAKSUM_A_ADDR);UartTxIndex++)   //验证校验和
                        {
                                        UART_Compnent.CalcTxdCheakSum += UART_Compnent.SendBuff[UartTxIndex];
                        }
                        UART_Compnent.SendBuff[TX_CHEAKSUM_A_ADDR] = UART_Compnent.CalcTxdCheakSum;

}       

//////////////////////////////////////////////////////////////////////////

//函数名称: void Uart_TxdCmd(void)

//函数功能说明:发送一帧固定长度数据

//输入参数:

//输出参数:

//调用函数: 无

//完成时间:2025-08-04

//作者: Danny

///////////////////////////////////////////////////////////////
void Uart_TxdCmd(void)
{
         if(++UART_Compnent.Txd_Clk_Div >= UART_PERIOD_DIV) //定义发送一帧数据周期,100ms,在全双工通讯时定义的发送周期,此时需打开周期发送标志,在半双工通讯无功能。
                 {

                           UART_Compnent.Start_Txd_Flag = 1;
                                 if((UART_Compnent.Txd_Clk_Div%TX_TIME_MS_DIV)== 0)       
                                 {
                                                         UART_Compnent.Txd_Clk_Div = 0;       
                                 }                                 
                 }
                 if((UART_Compnent.Txd_Clk_Div%TX_TIME_MS_DIV)== 0)//分频发送时间,防止一个字节数据发送没完成,又向buff装载数据
                {                                 
                         if(UART_Compnent.Start_Txd_Flag)
                         {
                                        if(UART_Compnent.Txd_Ptr++ >= TX_DATA_LENGTH)
                                        {
                                                        UART_Compnent.Txd_Ptr = 0;
                                                        if(UART_Compnent.Txd_En_Flag)
                                                        {
                                                                                UART_Compnent.Start_Txd_Flag = 0;
                                                        }
                                                        UART_Compnent.Txd_En_Flag = 1;
                                                        TxdDataProcessing();
                                        }
                                        else
                                        {
                                                        if(UART_Compnent.Txd_En_Flag)
                                                        {
                                                                        UART_SendData(UART0, UART_Compnent.SendBuff[UART_Compnent.Txd_Ptr-1]);       
                                                        }
                                        }
                                }
                 }
}





LKS32MC03串口全双工通讯demo程序V0.1.rar

1.46 MB

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

2

粉丝
家里为什么会有壁虎 什么可以治早泄 打耳洞去医院挂什么科 喉咙痛吃什么药好得最快 二八佳人是什么意思
痢疾是什么 碳水化合物是什么意思 属猴本命佛是什么佛 农历2月12日是什么星座 什么不可
躁动是什么意思 轻食是什么 榴莲皮可以做什么 十二指肠溃疡吃什么中成药 西瓜霜是什么做的
尿酸高适合吃什么水果 周期是什么 恰如其分是什么意思 高密度脂蛋白低是什么原因 质量是什么
花园里面有什么baiqunet.com 鸡炖什么补气血hcv8jop9ns6r.cn 苟不教的苟是什么意思hcv8jop2ns9r.cn 嘴干是什么病的征兆hcv8jop3ns1r.cn 为什么有的人招蚊子hcv8jop6ns3r.cn
打一个喷嚏代表什么hcv7jop9ns0r.cn 胃炎是什么原因引起的hcv8jop4ns0r.cn 左边肋骨下面是什么器官hcv8jop3ns9r.cn 有机可乘是什么意思baiqunet.com 喝什么茶去火hcv8jop2ns7r.cn
钙盐是什么hcv8jop8ns3r.cn 为什么长智齿qingzhougame.com 梅菜在北方叫什么菜hcv8jop0ns0r.cn 冰晶是什么hcv8jop7ns2r.cn 男生适合养什么小型犬hcv8jop9ns5r.cn
心心念念是什么意思hcv7jop7ns0r.cn 跖疣长什么样hcv8jop0ns4r.cn 锰酸钾是什么颜色hcv9jop6ns9r.cn cpf是什么意思hcv8jop6ns7r.cn 左侧肚脐旁边疼是什么原因hcv8jop1ns6r.cn
百度