自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (8)
  • 问答 (1)
  • 收藏
  • 关注

原创 GD32F4xx DMA 串口发送BUG

每次发送前必须清除 full transfer 标志位

2022-12-10 19:48:16 1099 1

原创 复旦微FMQL(国产Zynq) 【IAR裸机开发之PS】——非字节对齐访问

在x86架构下,我们经常会有这种操作

2022-07-13 16:21:08 2527

原创 嵌入式开发中Cache问题的解决方法

我们知道,在ARM架构体系下,一切皆地址。一片512MB的DDR3对应的不过也是一串长度为512M字节的地址

2022-07-04 15:14:51 926

原创 复旦微FMQL(国产Zynq) 【IAR裸机开发之PS】——前言

前一段时间写了不少使用Xilinx的Zynq芯片的文章,说实话在整个开发过程中几乎没有遇到什么疑难杂症。现在国产化进度赶人,进口的芯片只做了个功能验证,马上就要换上国产的。

2022-06-30 16:33:11 13492 11

原创 CAN通信的用户层设计

在汽车电子和工业领域里,经常会使用CAN总线方式来进行通信,CAN总线速率高,采用差分通信方式,因此抗干扰性强,常规走线可达十米以上。那么CAN协议底层有阻塞和唤醒模式,且有冗余校验和错误帧识别,因此可靠性极高。不同于modbus总线使用485作为通信方式,CAN总线没有主从机之分,总线上的设备均可不定时广播消息,主控制器只需根据帧ID接受相应的有用帧而舍弃其他帧。现在越来越多的主控制芯片都会集成1到2个CAN控制器,PLC厂商也会提供CAN拓展模块以支持CAN通信(此处不得不吐槽PLC

2022-05-13 19:02:47 2699 2

原创 使用库函数free( )导致异常错误

我在使用链表的过程中,需要经常使用free( ) 函数来释放启用的结点,这次由于我写程序的失误,在程序运行到free( )函数这里时,直接进DataFault( )错误中断,后来才发现了问题所在。首先free( ) 一般是和malloc函数或calloc函数一块使用的,后两个函数表示从堆空间申请一段连续的地址空间,当使用完毕后,使用free( )函数通知处理器释放掉该地址,也即该地址可以重新分配给别的地址了。我这次的错误是分配空间时给指针分配的空间小了,导致free( )的时候发生了内存泄漏,也就是

2022-05-12 14:49:14 1852

原创 Zynq 【SDK裸机开发之PS】——串口接收缓存

最近项目上在使用Zynq开发,也是第一次使用,期间会遇到各种各样的问题,属于Zynq本身问题的我会更新到我的另一篇博客《Zynq开发调试踩坑指南》中,这个版块将会陆续记录我自身在程序开发中的问题。这次的问题是串口收数据问题,众所周知,我在一个月前就已经把串口调通了,收发试着也没啥问题。现在正在加一个通过串口远程升级的功能,也就是发的数据量大了,几十毫秒一帧数据,每一帧都有个一百多字节,然后就发现偶尔收的数据CRC校验对不上,仔细核对发现是少收了一个字节了。我一开始是怀疑收数据的软件层驱动不对。毕竟整

2022-04-26 18:56:26 3742 6

原创 GD32F190T系列单片机外部晶振起振电路损坏

使用GD32F190T8U6, +5V供电。第一次使用。外部晶振8M,在其他项目上用量1K片/年,从未出现过故障。使用外部晶振过程中没有问题,产品老练测试大概一星期,期间没有问题。交付部队半年后(期间不知道有无使用),反馈其中一套产品的can通信异常。拆解后发现运行指示灯闪烁慢了大概四五倍。遂怀疑晶振异常。进入程序查看晶振配置结果,发现配置失败,起振不成功。先改成内部晶振供用户测试。一周后返厂,更换外部晶振,依然不起振,更换单片机,起振成功。后期其他项目使用过同款单片机,使用3.3V供电,目

2022-04-16 20:34:38 1211

原创 关于Xilinx、复旦微 7系列 FPGA “Init_B”引脚的深入探讨

这两年项目上提国产化的越来越非常严格,尤其是今年,军工项目更加特殊,总体单位直接提百分百纯国产化。这百分百国产化器件中,有外资控股的企业不能选,企业家是外籍华人的不能选。像思瑞浦之类的。直接又把百分之八十的国产化企业淘汰了。最近项目上用到了复旦微的FPGA,之前也没有用过复旦微的产品,只知道复旦微的产品大都是正向抄袭的Xilinx,然后就开始踩坑。这次遇到的问题是,一部分板子有大概率问题不能正常加载程序。最后定位问题是DC-DC的3.3V出的非常缓慢,大概20ms左右才能达到3.3V的水平。那这样会

2022-03-31 14:45:19 9420 1

原创 ZYNQ SDK开发调试踩坑指南

坑1:这个坑蹲了一整天,配置PS端的串口只能发数,不能收数,代码翻来覆去折腾一天,最后查到问题原来是bank1的电压选择的不对,我选择的是3.3V,其实硬件接的是1.8V。我也是无语了啊。。原来BANK电压选择这么重要。......

2022-03-28 20:38:36 5846

原创 论STM32强推的HAL库

HAL这个是安卓提出来的概念,芯片公司就是觉得象那么回事就都加上来了,实安卓的HAL是应用层下来的逻辑业务对应硬件的实现中间层,只需要逻辑相关的硬件逻辑,真正的抽取层。而芯片公司觉得大家都是250,写了这么个HAL库觉得要高大上点,实推出来的还是功能开发用的SDK,就是开发包,封装开发接口,没有业务抽取。换个名字还不如象windows那样叫个DDK更明白咋回事。还有,STM32的HAL库一看就知道没有完整的系统设计,代码里到处是模块和接口级的逻辑判断,封装的效率和使用便捷其实极差。每个接口都得查做什么

2021-12-29 14:36:28 534 6

原创 Stm32F4 系列使用DMA发送串口数据

以前在使用stm32F103系列单片机时,若要将串口配置成DMA发送,只需要正确配置DMA通道,然后发送数据时候,给DMA通道的CNDTR寄存器赋以发送长度,再使能DMA即可。如下代码所示:F103版本while (DMA_GetCurrDataCounter(DMA1_Channel7));// 检查DMA发送通道内是否还有数据memcpy(DMASendBuf, Buffer, (ucSend_num > 1024 ? 1024 : ucSend_num));//DMA发送数据-

2021-12-14 22:42:54 4586 2

转载 STM32 TIM1输入捕获配置

最近做一个IRIG-B码对时的项目用到STM32的TIM1输入捕获功能,配置TIM1的输入捕获遇到很多坑,在这里总结下,希望对大家有帮助。 项目中用到的输入引脚为PE13,为TIM1_H3即TIM1的第3通道,这里提醒大家在使用引脚功能时最好查看引脚的重映象表,看是否要开启重映象,功能为捕获高电平脉宽,具体配置如下:1.首先配置GPIO/* GPIO引脚配置 */void R_gpio_init(void) { GPIO_InitTypeDef G...

2021-10-08 19:00:17 2354 1

原创 GD32F190 ADC多通道DMA自动接收踩坑指南

如果条件允许的话,请不要用GD32F1x0系列。。。。-----题记这个系列的芯片官方连个库函数指南都没有你敢信?我都不要求中文版的了,起码英文版的得有吧??以往stm32的ADC工作模式,一般都是配置成多个通道自动连续切换,然后通过DMA把数据读走,这次用上GD32F190Tx芯片后,怀着国产之光的心态认认真真的写代码,看库函数,结果真就是踩坑了。我们习惯stm32的配置方式,都是给一个结构体成员赋值,然后调用xxx_init()函数,把结构体作为参数传入函数。但是,gd32的库函数都

2021-09-27 17:09:33 2870 3

原创 Ultra Librarian导入封装到AD20

1.下载Ultra Librarian软件并安装;2.在各元器件官网下载.bxl文件;3.在Ultra Librarian软件step1中选择Load Data,打开下载的.bxl文件;4.step2中勾选Altium designer,并取消勾选其他选项;5.step3中点击Export to Selected Tools。会自动打开一个以时间命名的.txt文件;6.找到该文件的路径,用Altium designer打开同一目录下的.prjscr文件,并选择运行;7.注意,这一

2021-08-25 09:05:08 2307

原创 Altium Designer原理图导出FPGA管脚的方法

原理图绘制好后,如果需要做DRC检查或者需要写FPGA程序,批量做引脚约束,倒是可以手动输入,但是大项目动辄几百个引脚,一个个手输就得残废。需要完成两个步骤,一是把原理图里的网络信息导出来,二是将网络信息导入到vivado。步骤一:在原理图上选中任一part后右键,选择Part Actions-->Configure Pin Swapping。(这个步骤要求原理图必须是在一个PCB工程下,如果你是一个单独的sch文件,那么就建一个工程把文件拖进去)在弹出的窗口里Ctrl + .

2021-05-15 15:55:08 5952

原创 Xilinx的7系列的SRCC和MRCC

Xilinx的7系列时钟输入有SRCC和MRCC。在手册上有描述,SRCC可用于本时钟区域,MRCC用于本时钟区域和相邻时钟区域。单看这个就有些困惑了,那难不成还连接不到全局时钟了。官方手册中有下面这个图,可以看出SRCC和MRCC都是可以连接到全局时钟的。这个图由于有点具体,不太好理解。看下面这个图,首先MRCC和SRCC都是可以连接到全局时钟的,但是全局时钟的资源有限。如果程序较大都使用全局时钟的话,那时钟资源就不够用了。SRCC可用于本区域时钟这个比较好了解,MRCC用于相邻的区域该这么理解,M

2021-05-15 15:16:40 3130

原创 IAP远程升级flash擦除失败

程序块擦除似乎没问题,但是升级标志位擦除失败。系只解锁了flash ,但是没有清除标志位

2021-05-05 01:52:10 328

原创 stm32F407 调试 LAN8720A ping不通问题解决

硬件信息主控:stm32f407VET6PHY芯片:LAN8720A网络变压器:HR91105A 带网口座TCP/IP 协议栈LWIP版图设计PCB制作完成,打样板回来后,发现有几个问题:HR911105A的 4 脚忘了接。。。应该接到VDDE,此处飞线轻松解决; LAN8720A的封装用的不太好,芯片背面的焊盘是用来接地的,这也是该芯片唯一接地的地方,而我把这个焊盘画的有点小了,如图: 然后拿来野火的例程一通试,因为野火的是stm32F407ZET...

2021-04-05 16:08:36 9843 16

原创 RS422芯片在一主多从总线通信中的问题

众所周知,RS422是全双工的总线通讯方式 ,类似于两个485芯片共同使用,这次我使用的美信公司的MAX1482ESD芯片。往常的应用场景一般是一对一通信,没出过什么问题,但这次情况不一样了。这是芯片的功能框图。理论上来说,收发是独立开来的,收发互不影响,但是就这样依然出问题了。我们采用了一主多从的连接方式。①为主机,②③为从机,主机的发连接从机的收,主机的收连接从机的发。我在电路上把三个芯片的RE拉低,DE拉高,这样收发都使能了,只单独开启一个从机,通信没有问题,可是当我开启两台从

2021-03-01 13:46:12 10101 15

原创 stm32 网口 串口模块通信丢帧、死机问题的解决

首先描述问题,是我一同事而非我本人遇到的,公司让我协助他查找问题。客户是卫通地面站,主控电脑使用的是麒麟系统,通过UDP和我们的设备进行网络通信,客户每间隔一秒钟发送一次状态查询指令,一天的时间内会出出现3到5次设备不响应指令的状态,客户判定为丢帧。通过查看客户的通讯日志,发现不响应的时间竟然差不多都是40秒钟以上,40秒后恢复了响应。情况诡异。一开始同事怀疑是网口模块的问题,毕竟客户那里发的比较频繁,有可能说是模块收发的数据太多,导致了硬件异常,模块接收发送失败。还有某研究所的一哥们提醒说他觉得m

2020-09-14 10:23:32 5407 1

原创 VS 调试shell32.dll 程序

用C#做一个音乐播放器的程序,其中用到一个ShellClass类,包含在shell32.dll中,使用的是win10,运行OK,将该程序放在windows 7 中运行时,出现以下错误:Unable to cast COM object of type 'Shell32.ShellClass' to interface type 'Shell32.IShellDispatch5'. This operation failed because the QueryInterface call on the

2020-07-18 13:39:22 991

原创 HDL为什么要有可综合和不可综合两种代码

Verilog HDL和VHDL相比有很多优点,有C语言基础的话很容易上手。搜集了一些网上大神的经验总结和书上的例子,所以对于和我一样的初学者,这篇博客应该还是很有提高作用的,至于具体语法,任何一本书都讲的很详细。0. HDL历史HDL 是 HardwareDescriptionLanguage 的缩写,中文名“硬件描述语言”,并不是“硬件设计语言(HardwareDescriptionLanguage)”。正是这个单词,决定了绝大多数部分电路设计必须遵循RTL的模式来编写代码,而...

2020-06-27 16:34:45 2053

原创 BGA焊盘如何扇出

第一步:Altium designerPCB设计中打开设置规则,把间距规则改成最小。第二:Altium designer PCb设计中,对BGA扇出的电源引脚线宽大小设置。第三:设计BGA扇出的过孔的大小(0.8的BGA,用的是8/16 mil的孔)。第四步:选择BGA,右击选择扇出。执行上面命令后弹出下面对话框 。执行后BGA扇出步骤就完成。如果上面的A...

2020-04-27 16:16:06 5874 1

原创 FLASH中的BOOT Sectored 和 Uniform Sectored两种类型的区别和联系

前天有一个同事过来问我一个问题,就是他们一直在生产的一个板卡上的一篇镁光的芯片停产了,问我用这系列的另一款替代可不可行,我拿来看了看,这是镁光生产的一片NORFlash芯片,1G停产的是 PC28F00AP30BFA,想象的替代品是PCB28F00AP30EFA,一个是bottom boot ,一个是uniform,查了许多资料,竟都是空白,也有人问,但是答的讳莫如深,后来终于搜索到了一篇......

2020-04-10 13:48:09 1664

原创 关于【野火】OV7725例程移植【OV7670】总结

用了三天的时间,终于搞定了程序的移植。也是第一次移植stm32程序。最终的移植成功版本,改了SCCB通信、FIFO读写时序、寄存器配置、引脚修改的一些地方。一、移植过程中SCCB通信遇到的问题1.由于野火的OV7725摄像头内置上拉电阻,所以在配置时SDA和SDL都被设置成了Mode_OD (开漏模式),但是战舰带的OV7670摄像头并没有内置上拉电阻,所以不能......

2020-04-10 08:38:57 2351 5

原创 Vivado 使用过程中问题总结

在vivado进行一个行为级别仿真时,运行到simulate 步骤时 弹出了如下提示:[USF-XSim-62] 'simulate' step failed with errors. Please check the Tcl console or log files for more information.[Vivado 12-4473] Detected error while r...

2020-03-12 17:11:04 34622 12

转载 在直流电源(Vcc)和地之间并接电容的作用

1,在直流电源(Vcc)和地之间并接电容的电容可称为滤波电容.滤波电容滤除电源的杂波和交流成分,平滑脉动直流电压,储存电能.取值一般100-4700uF.取值与负载电流和对电源的纯净度有关,容量越大越好.有时在大电容傍边会并有一个容量较小的电容,叫高频去耦电容.也是滤波的一种型式用来滤除电源中的高频杂波以免电路产生自激,稳定电路工作状态.取值一般0.1-10uF.取值与滤除杂波的频率有关.这样...

2020-03-11 22:26:44 2771 1

原创 stm32 硬件SPI接收 数据的干扰、丢包的一些感想

最近做一个项目,客户用4Mhz的SPI时钟给我们发数据,一开始还想着用软件模拟SPI接收,结果还是我too young too简单。4Mhz虽然听起来速度不高,但是相当于一个电平持续时间是125ns,用stm32的库函数去读,根本就做不到,光是响应中断就需要十几个指令周期,几十纳秒就出去了,更不用说再读取电平状态去判断了。所以不得不更改电路板,被迫接受使用硬件SPI的命运。因为以前知道st.........

2020-03-07 09:26:50 12892 7

原创 C# winform 中定时器 Timer不能正常操作开启、关闭的问题解决

在线程中,开启定时器timer.Start()时候,无法进入timer_Tick()事件。-------------------------------------------------------------------解决方案:tthis.Invoke(new MethodInvoker(delegate{ timer.Start();}));由于静态类里...

2019-05-30 21:08:15 9834

原创 使用W5500配置UDP双向 收发 通信

最近又使用W5500网络芯片开发了一个新产品。这次的产品主要还是TCP通信,但是在使用过程中遇到了一个问题。如果上位机异常关闭,此时socket可能并不会认为已经断开了连接,因此再次尝试连接该端口的时候会被拒绝。那么解决这个问题想到了两种方法,一是使用心跳,但是心跳是最无力的妥协,破坏程序的结构性,同时也增加不必要的程序开支。第二种方法就是下位机增加一个UDP端口,因为UDP连接不要求...

2019-05-29 23:24:24 5814

原创 使用stm32 定时器TIM3 的重映射引脚 捕获正交编码器数据的一些积累

因为我们公司的软件和硬件是分开的,硬件人员在设计电路板的时候,为了布线方便,往往会使用一些引脚的重映射功能。这次使用的单片机是stm32F103ZGT6,使用PB4和PB5捕获正交编码器的数据。因为这两个引脚本身没有定时器,只有在重映射时候才能使用TIM3的ch1和ch2。因此,我使用重映射配置,将这两个引脚配置了以下,这是一开始的代码:GPIO_InitTypeDef......

2019-03-12 15:30:21 9370 2

原创 stm32f103在使用定时器1重映射引脚输出PWM

在使用stm32f103ZGT6单片机输出PWM时候,各种配置都不能正确输出,后来查看手册,PE11该引脚对应的确实是定时器1的通道2,但是属于该引脚的重映射功能,遇到这种情况,需要多加一条语句。RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1 ,ENABLE); //TIM1时钟使能 RCC_APB2PeriphClockCm...

2019-03-08 13:12:32 5597

转载 Implementation of Connecting a Socket with Timeout in C#【C# Socket.Connect连接请求超时机制】

From:https://www.codeproject.com/Articles/31514/Implementation-of-Connecting-a-Socket-with-TimeoutIntroductionYou will notice that neither of the two classes, System.Net.Sockets.TcpClient nor Syst...

2019-01-23 17:08:34 498

转载 串口的单线半双工模式(stm32f10x系列)

这两天折腾CTS/RTS硬件流控,看到说232协议的CTS/RTS只是用来做半双工换向使用的。正好手头上有块stm32的板子,看了看stm32的Usart,竟然发现支持的是单线半双工。232里面毕竟4根线,支持半双工也是各自独立地物理信道(大胆猜测,回头回顾一下以前草草使用的双线485,看看它的半双工)。第一次注意到。之所以引起我的兴趣,是因为,我好奇stm32的单线半双工有2点。  第一:有......

2018-12-28 10:48:45 16988 24

原创 PyCharm中无法调用numpy,报错ModuleNotFoundError: No module named 'numpy'

之前安装了Python,后来因为练习使用Python写科学计算的东西,又安装了Anaconda,但是安装Anaconda之后又出现了一个问题,在命令行中编写Python命令调用numpy可以正常使用,但是在PyCharm中调用却会报错No module named 'numpy',也就是找不到numpy,情况如下面所示。在命令行中可以正常使用numpy:但是在PyCharm中不能正常使...

2018-10-25 11:29:39 6066

原创 c#编写Winform窗体分辨率变低

前段时间在开发一个总线舵机调试程序,开发环境是Windows10 64位专业版(V1803)和Visual Stuido 2015专业版,电脑屏幕是15.6英寸分辨率1920*1080,采用的是WinForm程序设计方法开发。在程序运行时遇到了这样一个问题,在Visual Studio设计的很清晰的菜单和界面,运行的时候菜单和控件上字体变得很模糊,界面大小也发生了变化。于是上网寻求解决办法,网友给...

2018-08-28 14:48:58 3507 13

原创 使用C#编写一个求解数独的小软件

工程文件下载,点击这里:工程文件下载地址我挺喜欢的一个女同学喜欢做数独题目,作为忠实的备胎,当然是要为她提供一个能在她冥思苦想未果后寻求答案的小软件啦。说干就干,不能做的太low,所以得有个界面。我的小软件可以由用户调整数独大小,这样就不用担心如何适配更复杂和简单的数独了。刚开始做的一版本没有考虑大宫格内的小宫格也不能出现重复数字,例如:下面这个图的左上角九个宫格。只是考虑了行列不能出现一样的数据...

2018-04-01 10:50:13 4491 10

转载 C#路径中获取文件全路径、目录、扩展名、文件名称

class Program { static void Main(string[] args) { //获取当前运行程序的目录 string fileDir = Environment.CurrentDirectory; Console.WriteLine("当前程序目录:"+file

2017-09-21 17:02:56 1530

原创 C# “不能使用非固定表达式中包含的固定大小缓冲区。请尝试使用 fixed 语句”

今天在用C# 中,创建了一段不安全代码,在结构体中嵌入固定大小的数组。在对sendobj(不安全结构体)进行赋值时,提示“不能使用非固定表达式中包含的固定大小缓冲区。请尝试使用 fixed 语句”,后来通过查询MSDN,fixed 语句将为托管变量设置一个指针,并在该语句的执行过程中“单边锁定”该变量。 如果没有 fixed,指向可移动的托管变量的指针将几乎没有什么用处,因为垃圾回收可

2017-09-19 17:20:48 4855 1

Simple_MediePlayer - 副本.rar

办公室每天都要播放起床闹钟,做操音乐,下班音乐,如何指定播放时间和播放文件呢,这个程序或许可以帮助你https://blog.csdn.net/shizhibuyi1234/article/details/107427770

2020-07-23

Shell32.dll V1.2.107

VS中自带的旧版本的V1.0兼容性差,问题多多。Shell32.dll V1.2.107 用于替换VS中自带的旧版本的V1.0

2020-07-18

Xilinx Artix-7.rar

只为技术共享,不为积分 xillinx 系列pcb库和原理图库

2020-04-18

stm32硬件SPI3接收

stm32 硬件SPI接收 数据的干扰、丢包的一些感想,可转至我的博文进行阅读,博文链接: https://blog.csdn.net/shizhibuyi1234/article/details/104697676

2020-03-07

stm32 单线收发.zip

用于将stm32单片机配置成一根线可以实现收发功能。 文件包含usart.c 和 usart.h文件 详见博文https://blog.csdn.net/shizhibuyi1234/article/details/85318290#comments

2019-06-21

C#编写的USB通信实例(含源码)

本资源是使用C#和DotNetUSBLib开发的USB通信实例程序,使用VS2015+Devexpress编写,可以结合我的相关博文进行学习实验

2018-04-03

C# 编写解数独软件(源码)

在VS2017 + dev控件环境下编写的求解数独的软件源码。

2018-04-01

关于野火OV7725例程移植为OV7670问题总结

野火M3 OV7725 摄像头例程移植为OV7670 过程中出现的问题

2016-07-11

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除