cp_srd
码龄7年
关注
提问 私信
  • 博客:84,815
    社区:1
    84,816
    总访问量
  • 37
    原创
  • 2,001,170
    排名
  • 18
    粉丝
  • 0
    铁粉

个人简介:学习ing

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:香港
  • 加入CSDN时间: 2018-02-08
博客简介:

cp_srd的博客

查看详细资料
个人成就
  • 获得104次点赞
  • 内容获得70次评论
  • 获得313次收藏
  • 代码片获得791次分享
创作历程
  • 1篇
    2023年
  • 2篇
    2022年
  • 4篇
    2021年
  • 27篇
    2020年
  • 1篇
    2019年
  • 2篇
    2018年
成就勋章
TA的专栏
  • PyQt5
    5篇
  • Python
    9篇
  • C/C++
    25篇
兴趣领域 设置
  • 嵌入式
    mcu
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

357人参与 去创作
  • 最近
  • 课程
  • 代码仓
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

分段CRC SAE-J1850

不查表,直接算的函数如下。
原创
发布博客 2023.05.02 ·
431 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

cmake3.22 armlink -Xlinker的bug

cmake版本3.22时编写的cmakelists.txt脚本,调用armclang和armlink构建mcu工程时,会提示如下错误:解决方法是在build文件夹下找到rules.ninja文件,将-Xlinker修改为-x即可,也可以将cmake的版本降到3.17.5,也能解决此问题。...
原创
发布博客 2022.03.16 ·
708 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

GD32 硬件iic 读、写和快速读、写实现。

芯片:GD32F105VGT6亲测可用,宏MPU_ADDR 根据电压决定,我这里是0x68。初始化IOvoid mpu6050_pin_init(void){ rcu_periph_clock_enable(RCU_GPIOB); rcu_periph_clock_enable(RCU_AF); rcu_periph_clock_enable(RCU_I2C1); gpio_init(GPIOB, GPIO_MODE_AF_OD, GPIO_OSPEED_2MHZ,
原创
发布博客 2022.02.19 ·
12340 阅读 ·
16 点赞 ·
18 评论 ·
67 收藏

gd32e103 usb库的不足

在使用gd32e103 usbd_cdc_acm(虚拟串口)时,发现调用cdc_acm_data_receive和cdc_acm_data_send时,cdc_acm_data_send经常回复cdc_acm_data_receive接收到的数据,查看了cdc_acm_core.h头文件,可以发现数据结构usb_cdc_handler只有一个数据缓冲区,也就是说接收和发送共用一个数据缓冲区,如果是这样,在发送之前memset应该也是可以解决发什么回什么的,但程序运行的时候,还是会出现发什么回什么,解决这个问
原创
发布博客 2021.10.15 ·
1477 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

按键单按、双按、长按的中断与非中断处理

以下是非中断处理#include "gd32e10x.hint main(void){ volatile static uint8_t a = 0, b = 0, c = 0, d = 0; systick_config(); rcu_periph_clock_enable(RCU_GPIOC); gpio_init(GPIOC, GPIO_MODE_OUT_PP, GPIO_OSPEED_10MHZ, GPIO_PIN_6); rcu_periph_cloc
原创
发布博客 2021.09.24 ·
1162 阅读 ·
4 点赞 ·
2 评论 ·
5 收藏

GD32F103和GD32E230在串口接收模式(dma + idle)的区别

先上GD32E230的串口DMA代码。static void rgb_com_dma_init(void){ /* enable DMA clock */ rcu_periph_clock_enable(RCU_DMA); /*configure DMA interrupt*/ nvic_irq_enable(DMA_Channel1_2_IRQn, 1); /* initialize DMA channel2 */ dma_deinit(DMA_CH2
原创
发布博客 2021.03.19 ·
5447 阅读 ·
7 点赞 ·
15 评论 ·
20 收藏

qt5利用qcombo box的信号扫描串口列表

在MainWindow下开启self.centralwidget.setMouseTracking(True)self.lcc_uart_port.setMouseTracking(True)self.fluke_uart_port.setMouseTracking(True)利用combo box的activated信号连接槽函数self.lcc_uart_port.activated.connect(self.scan_uart_port)self.fluke_uart_port.acti
原创
发布博客 2021.01.06 ·
505 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

ad5764的回读,硬件spi接口

之前写过了mcu通过硬件spi接口向dac芯片ad5764的数据寄存器写值输出电压,ad5764的offset与gain寄存器的值也是可以通过硬件spi读出来的。第一步:将待读取的芯片设置为读模式第二步与第三步:可以看到在时序图中,回读发生了2次数据发送(spi是同步通信,发送几次意味着接收几次),第一次发送向芯片写入命令,告诉芯片准备读哪个通道的哪个寄存器,返回的数据是未定义的,可以不用管;第二次发送NOP,接收芯片返回的寄存器的值。接下来就是编写代码实现功能了,因为板子上有2颗ad5762与
原创
发布博客 2020.12.12 ·
2881 阅读 ·
1 点赞 ·
1 评论 ·
7 收藏

vscode开发stm32项目时提示找不到uint32_t类型的解决办法

添加一个配置就行了。
原创
发布博客 2020.12.04 ·
8962 阅读 ·
16 点赞 ·
11 评论 ·
14 收藏

mcu io模拟i2c 驱动tca6424a

#ifndef __TCA6424A_H__#define __TCA6424A_H__#include <stdint.h>#include "NUC123.h"#define CLOSE_LED 0#define CHANNEL_SELECT 1#define MODE_SELECT 2#define VOLT2 3#define TRIGGER 4#define VOLT1 5#define FREQ 6#define CH1 ...
原创
发布博客 2020.11.30 ·
2166 阅读 ·
1 点赞 ·
3 评论 ·
12 收藏

ad5764 spi菊花链通信

发布资源 2020.11.28 ·
7z

ad5764的spi菊花链通信

有一个模拟板子上有4个dac芯片,2颗ad5762和2颗ad5764,最终使用了mcu的硬件spi做菊花链通信。可以看到mcu的spi sdo进入到u29 ad5762的sdin后,u29 ad5762的sdo进入到u57 ad5762的sdi,依次类推,最后从u69 ad5764的sdo进入到mcu的sdin中,完成一个环。而ad5762与ad5764的所有LDAC都是并联的,公用mcu上的一个pin脚。菊花链的部分还是要多看芯片手册。这里可以看到有一个t15时间,极短,但是很重要。还有
原创
发布博客 2020.11.28 ·
4374 阅读 ·
4 点赞 ·
0 评论 ·
33 收藏

Pyqt5中关于QMutex的问题

这是子线程的启动部分,第一次启动的时候2个qmutex的lock是成功的,顺利进行了下面的启动 if channel_num in range(1, 7): self.dac_dict['channel_num'] = channel_num self.dac_dict['h_or_l'] = 1 self.dac_dict['lcc_flag'] = 0 self.dac_dict['fluke
原创
发布博客 2020.11.05 ·
1067 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

ADC芯片的校准

有些DAC芯片中有校准用的寄存器(offset、gain),比如AD5764,而有些ADC芯片则没有,比如ads8689,那么就需要进行人为校准了。其实ads8689的线性度还是非常好的。校准的时候需要ADC芯片对DAC芯片的输出进行测量,并将反馈结果记录在表中。通过excel中的折线图也可以对比看它们的线性度,之后利用python或者其他语言进行一元线性回归,即可求出k和b的值。adc列是位校准的测量数据,meter中是高精度万用表的测量数据(以此为准),dac列则是校准过offset与gain的数
原创
发布博客 2020.09.03 ·
12356 阅读 ·
3 点赞 ·
2 评论 ·
37 收藏

nuc123的timer操作

#include "NUC123.h"static uint32_t Module_Temp = 0;// Time-out period = (Period of Timer clock input) * (8-bit PRESCALE + 1) * (24-bit TCMP).(在NUC123.h文件TIMER_T::TCMPR寄存器的描述中有此公式)// 调制频率定时器,0-300Hzvoid Timer1_Init(void){ CLK_SetModuleClock(TMR1_MO
原创
发布博客 2020.06.27 ·
530 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

nuc123将结构体对象写入flash的操作

#include <stdio.h>#include <stdlib.h>#include <memory.h>#include <stdint.h>#pragma pack (4) /*指定字节对齐*/struct Testing_Equipment{ // uint8_t Help; // 帮助命令标志位 uint8_t IDString[4];
原创
发布博客 2020.06.23 ·
1160 阅读 ·
2 点赞 ·
0 评论 ·
3 收藏

nuc123 ad5764 软件模拟spi驱动程序

源代码如果需要源代码请下载AD5764.c/** Vout = -2 * Vrefin + 4 * Vrefin[D / 65536]* D = ((Vout + 10) * 65536) / 20*/#include <stdio.h>#include "NUC123.h"#include "AD5764.h"#include "delay.h"unsigned char InputBuf[32] = {0};unsigned char OutputBuf[32] .
原创
发布博客 2020.06.20 ·
711 阅读 ·
2 点赞 ·
4 评论 ·
2 收藏

nuc123 ADS8689软件模拟SPI驱动程序

ADS8689.c#include <stdio.h>#include <string.h>#include "ADS8689.h"#include "delay.h"static uint8_t receive[4] = {0};const float reference_voltage = 4.096;const uint8_t range = 5;void ADS8689_Init(void) { GPIO_SetMode(PD, BIT0 | BI.
原创
发布博客 2020.06.20 ·
2875 阅读 ·
4 点赞 ·
7 评论 ·
11 收藏

PyQt5综合demo(QSerialPort QThread QWidget)

# !usr/bin/env python# -*- coding:utf-8 -*-import time, csv, sysfrom PyQt5 import QtWidgetsfrom fluke8845A import Ui_MainWindowfrom PyQt5.QtSerialPort import QSerialPort, QSerialPortInfofrom PyQt5.QtCore import Qt, QThread, pyqtSignal, QObjectfrom P
原创
发布博客 2020.06.20 ·
1391 阅读 ·
3 点赞 ·
0 评论 ·
11 收藏

ADS8689 软件模拟SPI驱动

发布资源 2020.06.03 ·
zip
加载更多