- 博客(92)
- 收藏
- 关注
原创 allegro配置
.然后延续至今,我们在搞阻抗的时候要知道阻抗连续性才是最重要的,30ohm,40 ohm,50 ohm,60 ohm其实都是差不多的.注意:有差分对的时候规则要分层设置,比如90ohm差分线,根据计算线宽值设置不同层的线宽.把规则展开就可以看到不同的层了.D0~D7(数据位) , DM0(数据屏蔽) , DQS0P/N(数据选通,差分信号,每8位数据配一对)CS(片选) , CAS(列地址) , RAS(行地址) , ACT(命令激活)WE(写使能) , CLK(时钟使能) , ODT(片上终结)
2024-04-29 11:39:19
811
原创 allegro相同模块复用
5,布局克隆后会自带grounp属性,可以删除这个模块的grounp属性, Find面板勾选groups后,框选需要删除的模块的器件,然后右键执行Disband group即可.4,使用的时候,选择需要复制布局的元器件, 右键,选择place relicate apply -> power1。3, 再次右键,选择Done,然后任意位置单击,弹出对话框,命名并保存,这里输入power1.mdd。2, 全选之前布局好的器件,右键,选择 place replicate create。
2024-04-29 11:37:54
574
原创 Qt打包成exe
三,把编译的文件复制到桌面新建的文件夹1,并且打包软件也进入文件夹1。六, 、把程序打包成一个可运行的exe。四,执行打包命令,注意软件名要相同。二,打开编译器打包软件。五,生成一堆依赖库文件。
2024-04-29 09:23:32
400
原创 cubemx的freeRTOS移植
当任务获取到信号量的时候才能开始使用被保护的资源,使用完就释放信号量,下一个任务才能获取到信号量从而可用使用被保护的资源。**而 FreeRTOS 提供的互斥量可以通过优先级继承算法,可以降低优先级翻转问题产生的影响,所以,用于临界资源的保护一般建议使用互斥量。5,注意事项,RTOS目前对VC6编译器支持不好,需要修改文件,避免麻烦不要折腾了用V5.2,设置堆的大小,配置给系统的可用内存空间,不建议特别大,多数变量用全局变量。我们创建三个任务,一个高优先级任务,一个中优先级任务,一个低优先级任务。
2024-04-29 09:22:18
443
原创 cubeMX常用函数
/LED电平自动翻转。//触发TIM2中断定时器。时钟上升沿采集,下降沿输出,数据长度8位,先高位,后低位。Spi方式通讯,需要选择spi模式,0和3都可以。
2024-04-29 09:21:42
249
原创 变压器设计
这时铁芯中的磁通密度达到了最大值,几乎不增加了,这个时候称为铁芯“饱和”,铁芯饱和以后,铁芯中的磁感应强度就不再随线圈中的电流增大而增大了,变压器也就失去了能量交换的作用了,增大的能量交换不出去。正因为它比铁芯的最大磁导率小很多倍,所以,只要在保证铁芯不至于饱和的情况下,应使空气隙尽量小。6,辅助绕组, 辅助绕组用于个开关芯片供电,芯片要求是15V,是输出5V的三倍,所以辅助绕组的匝数是输出绕组的3倍就是18匝。5,副边匝数,匝数比为30,则副边5.2匝,实际中没有5.2匝,则取值为6匝。
2024-04-29 09:20:37
301
原创 stm32小科普
系统时钟频率为72MHz,那么每个时钟周期的时间为1/72MHz = 13.89ns (秒,毫秒,微秒,纳秒)在这个例子中,GPIO_MAP[0]就是GPIOA的第0引脚,GPIO_MAP[1]就是GPIOA的第1引脚,72MHz: 1秒钟 1/(每次的时间)= 1/(1/72MHz) = 72 000 000次。系统时钟频率为168MHz,那么每个时钟周期的时间为1/168MHz = 5.95ns。需要的时钟周期数 = 需要的时间 / 每个时钟周期的时间。// 更多的GPIO别名...
2024-04-29 09:19:53
262
原创 接口电平转换
注意:在 N 沟道中,mos管开关将保持打开状态,直到提供栅极电压。3:当1.8V电平转3.3V电平时,1.8V电路发送高电平(1.8V),MOS管截止,D极(3.3V电路)被电阻上拉为高电平(3.3V)。2:当3.3V电平转1.8V电平时,3.3V电路发送高电平,MOS管截止,S极(1.8V电路)被电阻上拉为高电平(1.8V)。2.1:当3.3V电路发送低电平时,MOS管中的体二极管导通,所以S极(1.8V电路)为低电平。3.1:当1.8V电路发送低电平时,MOS管导通,D极(3.3V电路)为低电平。
2024-04-29 09:18:09
650
原创 keil相关错误
解决:这个问题困扰了一个上午,用了各种排除法,注释法来确定到底是哪里出错。先是注释掉了所有在其他文件中对这个函数的引用,然后试着新建一个文件,重新放入函数,重写的文件就没有出错,但是只要是在这个文件中定义函数无论是否引用就都会出现错误,最后发现是有个include写错了,写成了include “xxxx.c”,导致一直出现这样一个警告。解决:这个问题由在文件中调用某个函数,但是在调用语句之后才声明函数导致,向头文件添加声明,或者在使用该函数语句前声明这一个函数。解决:保证文件最后一行什么符号也没有。
2024-04-29 09:11:31
186
原创 modbus
3,实现过程,根据波特率算出一个byte的时间,然后串口一个字节是10byte,如果4个字节的时间没有收到数据,就默认为一帧数据接收完成,需要通过一个定时器来判断接收完成没有.2,当定时器开始计数,在间隔8ms没有收到数据的时候,停止计数,并把收到一帧的标志告诉modbus处理函数.2,软件层就是规定一帧数据的格式为一种特定的意义,本质就是串口收到的数据进行一种解析.1,硬件就是串口,但是串口传输距离有限制,所以加上了485芯片.5,收到不同的功能码,需要不同的处理。7,modbus初始化函数。
2024-04-29 09:08:04
243
原创 78定时器
1,定时器简介,以前用过PWM,现在需要更加详细一些。一共有4个定时器,这里用的是定时器3,定时器是独立于内核工作的。2,定时器的基本功能。
2024-04-29 09:05:16
338
原创 77看门狗
4,窗口看门狗喂狗程序,窗口看门狗刚开始不要用,有点复杂,最好把上边界设置到最大当普通的用.1,看门狗是单片机的一个内部功能,防止死机,可以复位用的。独立看门狗有独立的时钟源,计数器清0前喂狗就不会复位。2,stm31有两个看门狗。窗口看门狗使用系统时钟源,
2024-04-29 09:04:41
275
原创 76低功耗模式
开发板上按键是PA0,需要把PA0设置为外中断。待机模式唤醒需要专门的按键或者复位.中断服务函数就能唤醒低功耗。停机模式其实是操作系统电源。
2024-04-29 09:04:09
240
原创 75,PWM
溢出时间(周期)Tout(单位秒)=(arr+1)(psc+1)/Tclk 20MS = (59999+1)*(23+1)/72000000。PWM时钟频率=72000000/(59999+1)*(23+1) = 50HZ (20ms),设置自动装载值60000,预分频系数24。首先必须添加定时器的固件库,tim,PWM也是基于固件库配置出来的。自动装载值(arr+1),预分频系数(psc+1);按照上面设置,20MS的自动装载值60000,45°需要1MS的自动装载值3000,
2024-04-28 09:41:13
256
原创 73,外部中断
阵列按键的中断,是按下的时候进入按键读取程序来判断,这样就可以减少没有按下的扫描资源.如果是中断5到中断9.都会进入同样的中断处理函数,然后在函数里面判断是几号中断。中断处理其实只是两个中断程序处理,中断4一个,5到9是共有的,写一个就行。开发板阵列按键同一组电平读的时候是有4个IO的,所以要设置4个中断,然后把标志位置1,这样就可以进入主函数里面的判断了,再把中断标志清掉。不论在什么地方产生了中断4,都会跳转到中断4的处理函数,注意中断处理函数的名称是固定的,不能修改.4,程序,还是阵列按键。
2024-04-28 09:40:04
156
原创 72,阵列键盘
三,现在把IO口电平反转, 1,2,3,4, 初始化为推挽输出,配置为低;再把a,b,c,d,初始化为上拉输入配置为高;四,这个时候按下的F键,会使得d读出为低,那么通过反转前4为低,反转后d为低就可以确定按下的是F键.一,把1,2,3,4,初始化为上拉输入配置为高;再把a,b,c,d,初始化为推挽输出,配置为低;二,例如按下F建,则4读出为低,这样按下的按键区间缩小到了4个,为C,D,E,F;两次IO初始化,是因为读取的时候需要一次IO电平反转.这样a的值具有了唯一性和相当于性,下面进行判断。
2024-04-28 09:39:22
116
原创 71,ch376
U盘操作只是各很复杂的工作,并不是操作每一个地址,来控制U盘,都是利用一个系统来控制,别人win10这种,但是单片机资源不多,我们使用的是轻量化的文件系统来操作U盘.4,当单片机和CH376通讯成功以后进行下一步,操作U盘,单片机发送控制命令各CH376芯片,CH376再对U盘进行读写,删除和创建.表格有很多命令我们找起来不方便,厂家就提供了一个文件,包含了所有的命令,把厂家的文件添加到工程里就可以直接使用这些命令了.1,配置好SPI总线就可以使用CH376了,就是利用SPI总线发送命令来控制CH376。
2024-04-28 09:38:50
174
原创 70,spi总线
需要通讯的设备拉低就行,相比较IIC不需要发送地址,所以速度更快,确定引脚使用多,不过可以全双工.NSS如果是多个设备需要设置为手动,发送的时候拉低,其余为高用于接收.因为使用的是库函数,SPI相关的函数直接调用库里的来进行操作.4.4,MSB,高位在前还是低位在前,根据从设备数据手册。开发板单片机有2组SPI总线,使用的是SPI2。4.1,不过有几点需要根据数据手册来配置,4.3,预分频值,不稳定的时候加大。目前开发板使用的是SPI总线。5,SPI总线的数据接收。4,SPI总线驱动程序。
2024-04-28 09:38:05
122
原创 67,ADC
因为使用了DMA,所以需要知道地址,DMA是要知道在什么地址读取数据,然后把数据放到什么地址。//ADC初始化设置,然后直接读ADC_DMA_IN5变量的值就行。8,ADC的IO初始化,配置为模拟量输入状态。10,如果是2路ADC要怎么处理呢。4,电路,开发板上面是光敏电阻。10.2,DMA初始化需要修改。10.3,GPIO初始化的不同。10.1,显示的时候分别显示。首先声明的外部变量改为数组。10.4,ADC配置的不同。7,ADC功能开启DMA。1,ADC基本工作原理。获取ADC值就直接调用。
2024-04-28 08:54:24
181
原创 66,CAN总线
9,接收,CAN总线的速度快,其中一个原因就是接收的时候硬件可以过滤掉不需要的报文.报文和过滤器的ID完全对应,然后才开始把对应的报文放到邮箱中.其他不一致的都被删除。8,知道了发送的标准格式,程序就需要按照发送格式操作。1,can总线是特殊的IO才能配置使用。7.1.can的逻辑电平是电压差。7.2标识符有标准和扩展两种形式。11,主函数,把接收到的显示出来。这是用电压差表示0和1.7,基本操作函数详解。7.2.1,标准格式。7.2.2,扩展格式。接收也有过滤器和邮箱。
2024-04-28 08:29:30
166
原创 65,RS485
在程序上RS485总线的通讯和RS232类似,都是串口的通讯,只不过在接收和发送的时候多了一个RE控制,用于切换总线的收发状态.发送时候RE为高,其余时候保持为低用于接收.接收就是USART的接收不需要额外处理。使用双绞线可以提升抗干扰能力。主函数和RS232一样。
2024-04-28 08:28:30
131
原创 63,步进电机
5.3,电机旋转,a设置为多少就转动到对应的线圈节拍。5.2,电机断电(线圈长时间通电回损坏电机)5.5,电机转动一圈与节拍换算。3,不同样式的步进电机。1,步进电机基本原理。5.4,电机节拍控制。
2024-04-28 08:27:12
198
原创 59.IIC
例如,关掉传感器,是先找到器件地址(0X9E),然后在配置寄存器(0X01)的B0位写0X00000001.IO初始化以后是不能使用IIC的,因为初始化的就是IO,下一步是需要把初始化的io绑定为IIC的接口.开发板是的5,6,7脚全接VCC,那么地址表里的A0,A1,A2都是1.(接GND是0)I2C_SAND_BYTE(LM75A_ADD,0x01,1);发送,读取等操作,直接用默认的,就是复制过来。配置寄存器是0X01,温度寄存器是0X00;所有的设置都是根据IIC的通讯协议写出来的。
2024-04-27 09:12:37
211
原创 58,旋转编码器
程序在检测K2是否放开的时候,如果卡死,等待cou递增道60000的时候就跳出循环(大概1.2秒),做别的事情.7,实际中这么使用是有问题的,要把编码器连接的io设置为外中断,判断在中断里完成,后续详解.如果编码器出现卡死,会一直被认为没有松开按键,我们通过一个计数器来解决。6,编码器卡死,实际使用中,有可能出现。2,旋转编码器转动的波形。
2024-04-27 09:11:57
194
原创 57,数码管
读,写等操作是按照协议写的固定的,不能改变,格式统一。初始化io,推挽输出,速度50hz。通过TM1640连接到数码管上。1,数码管常用的显示器件。
2024-04-27 09:11:13
140
原创 56,触摸按键
按下就开始计时,用S3小于或者小于S1来判断是单击还是长按,调节S3就能设置长短按的时间了.3,2双击和单击的区别是,双击在D2的时间范围内会再次单击.3.1先判断单击和长按。
2024-04-27 09:10:39
101
原创 54,rtc
有两个初始化是因为RTC的供电有主电源和后备电源,当主电源上电,后备电源没有供电,就会对RTC初始化,如果后备电源一直有电,则RTC相关寄存器保存的数据直接使用.2,程序,由于特别复杂,官方的库有RTC功能.1,rtc外部电池接线。
2024-04-27 09:09:20
104
原创 53,串口
一般都使用的是串口中断来接收数据并且数据会有一定的格式,叫通讯协议.当然实际使用中的接收不会通过while查询来处理。2,usart库函数。
2024-04-27 09:08:49
188
原创 52,MIDI音乐
比如330hz就是1秒震动330次,但是频率周期需要高低电平各占一半,就是500000微秒,然后除以震动次数330,这样就得到每一次的延时数.通过乘以2每一次for循环只操作数组的偶数.比如每秒震动330次,那么750毫秒就是震动了330X750/1000次。播放的时间长度是对音调的数组值加1,数组的奇数位用毫秒表示,用次数乘以时间,数组中的时间单位是毫秒,需要除以1000。1,程序,奇数是频率,偶数是时间。
2024-04-27 09:08:12
153
原创 五十一,filash读写
不同型号会略有区别,保存到fiash的数据不能与程序有冲突,一般都是看程序占用空间,或者直接从最后的地址开始使用.1,fiash相关的库函数。
2024-04-27 09:07:41
163
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人