- 2024-12-20
-
回复了主题帖:
SDK怎么操作
freebsder 发表于 2024-12-20 16:55
意思就是你把你的协议封装成SDK,给到对方,对方不知道你的协议,由你负责封装。
打个比方,你要通过网 ...
如何封装成SDK,意思我理解,但是KEIL是直接用lib库就可以了吗?
-
发表了主题帖:
SDK怎么操作
就是使用KEIL编写STM32程序,内容主要是串口控制光源亮灭,之前我们是通过编写串口协议说明书来发给别人,别人能够开发使用,就是做一个上位机;今天有人咨询可否发一个SDK,我有点懵,KEIL生成的LIB文件,就是静态库,这个LIB不是只能在keil中才能打开?我想问的是KEIL编写的串口函数,除了写一个说明书之外,有什么可以让别人不知道我的主程序,只知道协议方便他人做上位机控制的,
- 2024-10-23
-
回复了主题帖:
关于串口接收中断函数有一个bug是什么原因导致?
Jacktang 发表于 2024-10-23 07:27
确定是串口接收中断函数有一个bug么
?我的串口中断函数写的有问题?因为我测试基本的这个3个功能都能实现,就是会出现如果末尾添加多个字节,会被执行,并且会收到error1
- 2024-10-22
-
发表了主题帖:
关于串口接收中断函数有一个bug是什么原因导致?
本帖最后由 xbxdbd 于 2024-10-22 17:03 编辑
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
uint8_t ucTemp;
if(huart ->Instance == USART1)
{
ucTemp = aRxBuffer;
Uart1_RxBuff[Uart1_Rx_Cnt++] = ucTemp;
if(Uart1_RxBuff[0]!=0xa3 )
{
Uart1_Rx_Cnt=0;
memset(Uart1_RxBuff, 0, sizeof(Uart1_RxBuff)); // 清空接收缓冲区
// 如果数据格式错误或数据测试失败,发送“ERROR”
char error[] = "ERROR1\r\n";
HAL_UART_Transmit(&huart1, (uint8_t*)error, strlen(error), 1000);
// globalError =1;
// HAL_UART_Receive_IT(&huart1, &aRxBuffer, 1);
// return;
}
// 检查是否是脉冲数指令
if (Uart1_Rx_Cnt == 4&& Uart1_RxBuff[0] == 0xA3&&Uart1_RxBuff[1] == 0x5a)
{
if (data_test1(Uart1_RxBuff) )
{
targetPulses =
((int16_t)Uart1_RxBuff[2] << 8) |
(int16_t)Uart1_RxBuff[3];
}
else
{
targetPulses=0;
// 如果数据格式错误或数据测试失败,发送“ERROR”
char error[] = "ERROR4\r\n";
HAL_UART_Transmit(&huart1, (uint8_t*)error, strlen(error), 1000);
memset(Uart1_RxBuff, 0, sizeof(Uart1_RxBuff));
Uart1_Rx_Cnt = 0;
// 在发送完ERROR后,检查接收缓冲区是否已清空,如果清空则重新启动接收中断
HAL_UART_Receive_IT(&huart1, &aRxBuffer, 1);//重新接受
}
Uart1_Rx_Cnt = 0;
}
HAL_UART_Receive_IT(&huart1,&aRxBuffer,1);
}
}
串口基本上指令都能完成 假如我发送A3 5A 4C 59 C3,不管我在59后面添加多少个字节,都是收到error1的错误指令,电机还能转动;我看Uart1_RxBuff【0】是C3;targetPulses是4c59;所以这种BUG我应该怎么避免,软件上逻辑哪里还需要添加或者修改的呢
- 2024-10-17
-
发表了主题帖:
上电顺序导致电机不可控?
电路板如果先接串口再接电源,电机不复位,就是回到限位开关的零点位置上,且控不上,发指令电机转动不起来,但是如果先接电源,再接串口电机就没事,能复位且控的上。如果使用按键复位,是可以的,但是硬件电路板我都是封死的,还有别的什么办法可以解决的吗?我希望不要受到顺序影响
- 2024-09-30
-
发表了主题帖:
限位触发电机停止,再发指令让他反转离开限位,电机没有任何反应,请问为啥?
tmc5240驱动控制电机,限位我直接接在他引脚内部,它会自动停止相关电机的动作,整个功能就是串口助手发送指令,让电机正反转,碰到限位,电机停止,这个点相当于起始点,,然后我发送01指令,电机反转,到目标位置;现在遇到的问题就是我发送正转指令碰到了左限位,电机停止,然后我发送反转指令,让电机离开限位,电机不动,若我手动的吧阻碍限位的东西移开,电机就能转了,我以为这个可能是被锁住的原因,我写了一个清除函数,但是也不行,所以不知道问题出在哪里?因为我是第一次上手电机部分
- 2024-09-12
-
回复了主题帖:
串口助手发送PWM光源指令,光源显示很奇怪?
yangjiaxu 发表于 2024-9-11 12:03
PWM控制器的占空比设置可能存在问题,导致在某些亮度值时占空比没有变化;或者控制软件的逻辑可能存在问题 ...
整个接受串口逻辑只有这个,然后光源处理逻辑就是PWM_light: __HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_1, pwm);
- 2024-09-10
-
发表了主题帖:
串口助手发送PWM光源指令,光源显示很奇怪?
我用串口助手发送指令电亮PWM光源,频率20Khz,发送指令亮度从0-6是由变化的,从7开始一直到亮度99亮度一直是一个样,然后发送100的亮度,亮度反而变低了,请问这个是什么原因?
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
uint8_t ucTemp;
if(huart ->Instance == USART1)
{
ucTemp = aRxBuffer;
Uart1_RxBuff[Uart1_Rx_Cnt++] = ucTemp;
if(Uart1_RxBuff[0]!=0xa3)
Uart1_Rx_Cnt=0;
if((Uart1_Rx_Cnt==2) && (Uart1_RxBuff[1]!=0xb3))
Uart1_Rx_Cnt=0;
if(Uart1_Rx_Cnt==8)
{
if(data_test(Uart1_RxBuff))
{
/********************
¸üDÂêy¾Y
*********************/
turn = Uart1_RxBuff[2];
pwm = Uart1_RxBuff[3];
if(turn == 0)
{
pwm_light(0);
}
else if(turn == 1)
{
pwm_light( pwm);
}
}
Uart1_Rx_Cnt = 0;
}
HAL_UART_Receive_IT(&huart1,&aRxBuffer,1);
}
}
void pwm_light(uint8_t pwm)
{
__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_1, pwm);
}
- 2024-09-03
-
发表了主题帖:
关于风扇降温降速延迟的问题?
入门理解阶段,设计风扇转速的问题,当温度降温到一定值时,转速不要立马就变化,延迟5分钟再降低转速,出现的问题是,HAL_GetTick()和delay_start_time是一样的值,i一直都是791,导致降温转速一直卡在延迟的转速当中,请问问题出在哪里?
- 2024-08-15
-
回复了主题帖:
LM3409通电测试LED灯珠不亮?
已解决了 谢谢
- 2024-08-14
-
发表了主题帖:
LM3409通电测试LED灯珠不亮?
根据数据手册和别人设计的电路板设计LM3409驱动电路,结果测试灯珠不亮,有输入电压12v,没有输出电压,测量6角电压是12v,1角的电压是1.5v
- 2024-08-05
-
回复了主题帖:
LED驱动芯片为啥一通电灯就会闪一下呢?
beyond_笑谈 发表于 2024-8-2 11:41
VIN跟EN中间串联电阻R,EN对地接电容C。上电瞬间VIN通过电阻R对C充电,充电时间也就是LM3409的使能启动时 ...
上电瞬间抓到的EN引脚的波形,然后测试过将EN的下拉电阻改为1K, 10k,还是有灯闪,然后也将输入端再焊接一个10uF,测试还是不行,然后测试再EN端接RC延时电路 ,也不行,求助请问我应该怎么解决?
-
回复了主题帖:
LED驱动芯片为啥一通电灯就会闪一下呢?
damiaa 发表于 2024-8-5 12:08
可能测不到。试下28楼的办法看看。
我重新示波器测试一下PWM的波形,一上电有一个电平触发
-
回复了主题帖:
LED驱动芯片为啥一通电灯就会闪一下呢?
damiaa 发表于 2024-8-5 11:08
主要看电平是高是低。
低
-
回复了主题帖:
LED驱动芯片为啥一通电灯就会闪一下呢?
beyond_笑谈 发表于 2024-8-2 16:54
使用多个通道,同时抓一下上电时的波形,发上来大家看看。
CH1: VIN
CH2: PA111 (MCU PWM)
CH3: ...
PWM波形是一条直线
-
回复了主题帖:
LED驱动芯片为啥一通电灯就会闪一下呢?
damiaa 发表于 2024-8-5 08:48
把PA111和芯片u5之间断开 u5的en用个按键使能 看会不会闪,如果不闪 那就是PA111引起的,如果闪那从u ...
我之前测试过 将EN端不接MCU的PWM引脚, 直接接一个电位器,模拟调光,通上电是不会闪一下的
-
回复了主题帖:
LED驱动芯片为啥一通电灯就会闪一下呢?
damiaa 发表于 2024-8-2 12:19
搞个类似反向的器电路加到PA11(你的好像是标的PA111)和en之间
比如npn的三极管PA11为高的时 ...
我的PA111接的是反相器,因为一上电就闪,所以我利用一个反相器来致使一上电就闪的情况,但是目前我加了反相器还是会一上电就闪,然后我也尝试在驱动器的EN引脚这里改成RC延时的,但是也是不可以的,还是一上电就闪
- 2024-08-02
-
回复了主题帖:
LED驱动芯片为啥一通电灯就会闪一下呢?
xbxdbd 发表于 2024-8-2 11:42
目前程序上设计的PWM上电默认的电平为高电平,就是我求助那里发的图片当中,设计的是 sConfigOC.Pu ...
我刚刚尝试一下RC电路,但是一通电还是会闪,很奇怪 一模一样的电路,LED驱动模块单独供电,EN端接了电位器,我一通电,并没有闪的情况;但是我接到MCU,pwm调光,就会出现这种情况
-
回复了主题帖:
LED驱动芯片为啥一通电灯就会闪一下呢?
beyond_笑谈 发表于 2024-8-2 11:33
单片机引脚上电时的默认电平是高还是低?这种在硬件上增加上/下拉,用于单片机程序初始化完成之前的电平保 ...
目前程序上设计的PWM上电默认的电平为高电平,就是我求助那里发的图片当中,设计的是 sConfigOC.Pulse = 0;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; 并且我在EN引脚那边设计了一个1M的下拉电阻,然后测试将Pulse和OCPolarity这两个值改为0,LOW ;0,HIGH;100,LOW;100,HIGH;这4个情况 出现的都是一样的,一通电灯就会闪一下,然后就恢复正常了
-
回复了主题帖:
LED驱动芯片为啥一通电灯就会闪一下呢?
damiaa 发表于 2024-8-2 11:01
LM3409好像有个en腿。
可以在上电时让en无效,上电稳定后让en有效。初始化后再用。看看如何?
请问怎么操作?