- 博客(32)
- 资源 (1)
- 收藏
- 关注
原创 BC35&BC95 ONENET MQTT(旧)
最近搞了个项目做的MQTT的连接,由于这个云服务器和移远的模块时常更新,导致前几年做的东西的一些知识都已经无法使用,得继续摸索,在此期间遇到了奇怪的事情,在此做些记录,以便以后查看。1、BC35模块已经停产,目前使用的是BC95,但是理论上是通用的,实际上在信号接口上还是有些区别,具体在datasheet上也没写明,只能实际测试。主要是uart接口电平,之前是3.0V电压域,和3.3通讯加接口电路或者1k以上电阻,但是在BC95上1k电阻需要修改成200-500,不然通讯失败。2、BC35有许多的3个固件版
2022-07-01 16:42:32
971
2
原创 串口屏获取控件值sscanf问题
串口屏获取控件值使用了sscanf,导致stm32报硬件错误,想到应该又是sprntf或者sscanf出了问题,通过修改的Heap_Size可以解决。这两库函数用是真好用,但是就是问题多多,而且还占用大量内存。Heap_Size EQU 0x400...
2022-01-22 23:28:13
375
原创 HX710芯片最大的坑
HX710芯片最大的坑是差分信号的输入阈值,不要只看到Vinp-Vinn,要看差模电压输入的范围,是AGND+0.9~AVDD-1.3,这个奇葩设定是真的火,由于电压域的问题,datasheet没有明确写支持3.3V信号,为了兼容3.3V的信号在设计的时候使用的AVDD=VDD=3.3V,而压力传感器的电压为了获得更高的输出范围使用了5V,这样导致电桥的输出为2.5±10mV,因此超过了3.3-1.3=2V,是无法获取到正确的压力值的。注意下这个问题,但是在使用外部电源直接输入差分电压时,我使用2个独立电源
2022-01-18 22:35:05
6105
原创 串口屏lua上手
最近搞个项目,需要使用串口屏,由于需要保存大量数据,并且需要作图,还需要打印图片,为了开发方便,资源合理利用,使用串口屏的sd卡保存数据,但sd卡大数据的读写在常规的串口控制协议中没有,只有lua的有这部分内容,因此搞了几天的lua程序。lua比较反c语言,是从i=1开始,也不需要{},多了写一些then…end这个倒是还行,主要是串口屏是需要写文件,每次修改还需要到串口屏上操作,还有就是编译器不好用,只能调试模式看问题。`–下面列出了常用的回调函数–更多功能请阅读<<物联型LUA脚本API
2021-12-23 17:50:21
833
原创 STM32 USB
CDC_bulk步骤:1、设备描述符,针对代码来说其在usbd_des.c中的数组__ALIGN_BEGIN uint8_t USBD_FS_DeviceDesc[USB_LEN_DEV_DESC] 中2、完成设备描述符的修改后,接下来需要修改配置信息,起始USB的配置信息有很多包括配置描述符 接口描述符、端点描述符等等,但属于其配置信息,故此ST将其全部放在数组中, 其位于usbd_cdc.c中其中有3处分别是USBD_CDC_CfgFSDesc 、USBD_CDC_CfgHSDesc、USBD_CD
2021-10-25 13:45:56
650
原创 STM32F4 DSP开启时__FPU_USED __FPU_PRESENT报警告问题最终方案
方案如下:结果:原因:不知道这脑残为啥这样设定,明明诶开启,实际上是开启了
2021-10-06 23:46:14
712
原创 STM32F1 FFT初试
1、STM32有dsp库,百度一堆的文章,注意有f4有硬件fft可以使用arm_rfft_fast_init_f32,F1不能使用,F1可以使用arm_cfft_radix4_init_f32,256长度1024长度,arm_cfft_radix2_init_f32 512长度。2、采样率FFT_SampleRate = SystemCoreClock/((__HAL_TIM_GET_AUTORELOAD(&htim3)+1)72);//采样波形为23hz~1.8k,采样512个点,(一周期最少
2021-09-09 23:59:27
1870
原创 cubemx spi库
最近调试AD芯片 spi一直调试不出,最后发现是发送和接受不能和原子一样发送一个同时接收一个,在接收中已经发送了一次数据。所以这样写HAL_SPI_TransmitReceive(&hspi1, (uint8_t*)&TxData, (uint8_t )&retry, 1,1000);这个函数是无法接收到数据HAL_SPI_Transmit(&hspi1, (uint8_t)&TxData,1,1000); //通过外设SPIx发送一个数据HAL_SPI_Tr.
2020-12-17 16:55:45
238
原创 strlen和sizeof对wifi 4g gprs上云的影响
C语言中没有字符串,用的是字符数组来模拟字符串。C风格的字符串时字符数组然后在末尾加0表示结尾。在C语言中有strlen和sizeof两个函数求字符数组的长度函数,他们俩的区别就是是否把最后的结束标志也加上去。strlen是不加的,他表示字符串的长度。而sizeof求的是字符串在内存中的长度,所以它是加上最后的’\0’的所以一般而言后者的长度会比前者多1。在onenet中如果使用sizeof来取发送的数据长度,则会出现无法发送到云上的现象,在com助手中显示正常,切记切记...
2020-12-15 20:35:19
66
原创 TCP连接onenet
之前用EC20连接过一次onenet,这次用GPRS连接,死活连不上,最后看视频才发现是连接码的设备ID搞错了。这里都行选择多协议这是真正的ID,名字是产品ID这个设备ID不是连接码的ID有时候第一次的时候会仔细看,后面就粗心了,所以得记录一下。以防出错392163#12345#YYY183.230.40.40 dtu.heclouds.com 1811 tcp透传协议...
2020-12-14 10:11:20
863
3
原创 SFH7050+AFE4404心率heart rate3
1、官网给的图2、驱动AFE4404:IIC协议,驱动LED,读取三路LED数据,官方有驱动例程,修改下就行,stm32硬件IIC没用用的虚拟IIC3、配置char hr3_init( uint8_t address, dynamic_modes_t* dyn_modes ){hr3_hal_init( address );hr3_set_settings( sw_reset_en,diag_mode_dis,susp_count_dis,reg_read_dis );hr3_set_led2
2020-07-03 22:18:23
2597
3
原创 BMD101心电详解
一个简单的数据格式,串口数据流控制,主要区分8字节数据是实时采集的心电电压数据,第512个数据是心率数据,如果只采集心率只需要取第512个数据就行,一秒一个大约。数据就按数据流来取,串口接收做缓存。其他的看datasheet就行,解析数据datasheet中也有示例添加链接描述链接:https://pan.baidu.com/s/15fyMnwTe-2veopX2P1UfoA提取码:c835网上卖三百多不知道为啥这么贵。。。没啥技术难度这玩意。。。。...
2020-07-01 11:36:03
6397
11
原创 AD420
1、硬件部分,网上资料很多,没有什么值得写的,就是有csdn大神写的3.3V不能驱动IO是不对,可以驱动,性能不错。2、软件,也很简单。贴一下#include "AD420.h"void AD420_OUT(unsigned long input);void AD420_Init(void);void AD420_Init(void){ SCLOCK_0(); DATA_0...
2020-04-30 10:34:56
467
原创 LABVIEW串口驱动
1、解决的问题:数据量大方法:需要多数据发送,加大波特率,加大串行数据量。采集时判断接收的数据,接收的数据需要一定的延时(这个很尴尬,暂时还没想到办法。是不是labview有多线程?);2、判断输出数据时怎么样在否时不输出0,因为在数据窗口显示曲线时会把0显示出来(未解决)3、曲线计算频率和周期需要数据组,不能实时数据显示,需要用多次采集后才能计算,计算时约到不过0点啊乱起八糟的事情,还有刚...
2020-04-26 02:01:58
828
原创 51驱动电机问题
1、发现的问题:2个18650锂电池供电,AMS1117-5.0稳压给52供电,当2个电机运行时会发生复位。2、猜测的原因:一种可能是买的18650的质量太差,内阻过大,电机启动电流大,导致压降过大,AMS1117的稳压能力又差,导致输出电压过小(实测电压到了5V以下)。二种可能是确实是输入电压不够导致的,瞬间电流太大的原因。3、解决的办法:用恒压器输出5V,自动升降压恒压5V输出。倍量的锂...
2020-04-26 01:53:49
323
原创 ADC0838 PROTUE仿真失败,有没有大神指教下
unsigned char read_adc(uchar chn){uchar i=0;uchar test=0;uchar adval=0;bit sgl,odd,sel1,sel2;if(chn == 0){sgl = 1;odd = 0;sel1 = 0;sel2 = 0;}else if(chn == 1){sgl = 1;odd = 0;sel1 = 0...
2020-04-18 12:32:28
245
原创 再战modbus+stm32
1、很好的文章功能码 名称 作用01 读取线圈状态 取得一组逻辑线圈的当前状态(ON/OFF)02 读取输入状态 取得一组开关输入的当前状态(ON/OFF)03 读取保持寄存器 在一个或多个保持寄存器中取得当前的二进制值04 读取输入寄存器 在一个或多个输入寄存器中取得当前的二进制值05 强置单线圈 强置一个逻辑线圈的通断状态06 预置单寄存器 把具体二进值装入一个保持寄存器0...
2020-04-13 15:01:36
303
原创 今日测试xtr116郁闷到了
今天要做一个4-20ma输出和0-5v输出的方案,目前已经做了一个方案,dac+xtr116。郁闷的是xtr116接线方便,但是是双线制的,并且只能双电源供电。还是老老实实用回ad420吧。...
2020-03-18 10:33:24
1623
2
原创 51阿里云总结
51内存问题:51肯定是不够的,用个54差不多可以了数据传输问题,网上有把key转成数据的插件,直接转成数组发数据就行esp8266通信协议看清楚喽,不要抄网上的,不然坑的浪费时间mmqt协议不需要了解太多,链接服务器----链接mmqt—订阅主题—上传数据(接受数据)—中间发送心跳。一定要严格按照协议的发,不然会断线,而且51的坑爹只有一个串口,很难调试。本来的思路:首先考虑的是服务...
2020-03-13 16:28:54
188
原创 遇到个问题,百思不得其解。
stc54单片机,做一个阿里云设备,调到最后的时候发现定时器不对,然后回头调,把整个程序转了一遍还是不对,然后把主函数全都//掉,只剩定时器,还是不行,最后一个函数一个函数//,发现用指针可以,用数组不行!,然而该函数没有再任何地方使用!搞不懂了。。。内存应该是足够的,data区才9...
2020-03-05 19:05:39
184
原创 51控制esp8266注意事项
1需要注意ESP8266的波特率。默认为9600,51单片机的12M晶振无法做到这个,所以需要先更改默认波特率。51单片机的内存问题,暂时选用了54,怕到时候内存不够用,现在考虑先把指令保存在flash中,再读取。所以需要先写一个写flash程序,先把指令存到flash,然后再写主程序。...
2020-02-26 13:55:03
242
原创 STC串口烧写问题
今天电脑烧写52单片机,发现无法烧写检查usb转串口模块,没有问题检测最小单片机电路,没有问题检测焊接是否焊接错误,没有问题检测元器件是否有误、电源电压是否正常,均正常。一度怀疑是不是芯片有问题,换了芯片也无法烧录,这就奇了怪了,突然想到家里还有一个电脑,换了个电脑正常了。wqnmd,啥情况,串口驱动都是正常的,能够正常使用,有人遇到过这个问题不?求解答...
2020-02-23 20:28:38
428
原创 RS485+MODBUS
1、这边数据传输时会需要多传一个0x00数据,不知道时为啥原因,单片机的串口tx正常,但是经过487后会把最后一位数据丢失掉,具体原因不详,不知道实际操作会不会有这个问题。2、51单片机的仿真xdata会出现问题,因此在写程序时需要数注意内存空间...
2020-02-20 13:24:21
579
原创 modbus数据协议传输的纠结
数据传输过程的纠结在于在测试stm32时protues的接收出现了问题,多数据传输格式出现了错误。本来以为是程序出现了错误,后来研究了一天,所以的可能都试了,但还是不能接收多数据,但数据接收可以正常运行。 现有一种数据流的方式来改变这种状态。`///取出数据并检查数据准确性void UART_Task(void){static uint8_t uartDataBuf = 0;if(R...
2020-02-19 19:29:41
369
转载 MODBUS学习
原文链接:https://blog.csdn.net/weixin_39793752/article/details/81456488
2020-02-19 13:08:47
236
原创 PROTUES的坑
这几天测试PROTUES的STM32的功能,暂时发现如下问题。不知道是否是我测试有问题,记录如下:1、开定时器3时必须使能1。2、系统tick好像不能用(库函数版),延时函数尽量使用delay。3、串口接收多数据出错,库函数、mx都试了都有问题,不同的波特率都一样。4、系统时钟不能太高,试了72不能用,尽量8MHZ,越低越好。记录于20200219,后续发现问题在此记录...
2020-02-19 12:47:28
473
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人