STM32F103实现数字振镜XY2-100协议

这篇具有很好参考价值的文章主要介绍了STM32F103实现数字振镜XY2-100协议。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、 XY2—100协议如下

xy2-100,stm32,单片机,嵌入式硬件

        该协议时钟(SENDCK)为2MHz ,SYNC为同步信号,CHANNELX/Y 是数据信号,它有20位组成,其中C2、C1、C0是振镜运动方向值,参考值为001,D15—D0是数据位,它是16位的二进制数,用来控制振镜转过的角度大小(取值为0~65535,即将振镜轴的转动角度范围映射到0~65535);最后一位是偶校验位,当发送的数 据中有偶数个“1”时,对应的校验位为“0”。当发送的数据中有奇数个“1”时对应的校验位为“1”。

 二、STM32F103实现

本实现设置系统时钟为72MHz, Keil代码优化等级为O3,使用寄存器开发方式,函数实现如下:

u16 Send_xy_100(u16 x,u16 y)
{
	u32 sync=0x003ffff8;
	u32 xsend=0x00010000;
	u32 ysend=0x00010000;
	u32 temp=0x00000008;
	u16 i,xcount=0,ycount=0;
	xsend|=x;
	xsend<<=3;
	ysend|=y;
	ysend<<=3;
	for(i=0;i<16;i++)
	{
		if(x&0x0001){xcount++;}
		if(y&0x0001){ycount++;}
		x>>=1;
		y>>=1;
	}
	if(xcount%2==1){xsend|=1<<2;}
	if(ycount%2==1){ysend|=1<<2;}
	temp=(sync&0x00400000)>>20|(xsend&0x00400000)>>21|(ysend&0x00400000)>>22;
	for(i=0;i<22;i++)
	{
		temp|=0x00000008;
		GPIOB->ODR =(GPIOB->ODR&0xfffffff8)|temp;//信号输出
		sync<<=1;
		xsend<<=1;
		ysend<<=1;
		temp=(sync&0x00400000)>>20|(xsend&0x00400000)>>21|(ysend&0x00400000)>>22;
		GPIOB->ODR&=0xfffffff7;//时钟拉低
		ycount=xcount<<10|0x0001<<5;
		ycount=xcount+0x0002;
		ycount<<=5;
	}
	return ycount;
}

u16 x为x轴偏转数据(0~65535),u16 y为y轴偏转数据(0~65535)函数返回值无意义只是为了凑出协议2MHz的时序,程序使用IO口进行模拟输出,PB3管脚作为时钟(SENDCK),PB2管脚SYNC为同步信号,PB1管脚CHANNELX,PB0管脚CHANNELY,PB3有默认复用功能,先关闭该复用功能(代码如下),同时记得配置GPIOB的这四个管脚为推挽输出

RCC->APB2ENR|=1<<0;     //开启辅助时钟	   
AFIO->MAPR&=0XF8FFFFFF; //清除MAPR的[26:24]
AFIO->MAPR|=0X00000002<<24;//关闭JTAG-DP,启用SW-DP,或者AFIO->MAPR|=0X00000004<<24;关闭JTAG-DP,关闭SW-DP

 三、模拟结果

PB3输出时钟波形

 xy2-100,stm32,单片机,嵌入式硬件

PB2(SYNC,上)与PB0(CHANNELY,下)输出波形(y数据为0x5554)

 xy2-100,stm32,单片机,嵌入式硬件

 然后作者使用AM26LS31四通道单端转差分芯片,将四路信号转为差分信号,能很好的控制二轴数字振镜。文章来源地址https://www.toymoban.com/news/detail-577875.html

到了这里,关于STM32F103实现数字振镜XY2-100协议的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【STM32】STM32F103C8T6串口通信,实现3个串口收发数据

    串口通信(Serial Communications)实现单片机与电脑或者其它外设进行通信,通信时只需两根线(TX,RX)就可以实现数据传输。STM32f103有三个串口,分别为串口1(RX PA10, TX PA 9),串口2(RX PA3,TX PA2),串口3(RX PB11,TX PB10)。 以下代码是配置三个串口: usart.c usart.h main.c 注意,

    2024年02月12日
    浏览(36)
  • STM32F103R8T6 SPWM实现正弦波输出

    PWM合成正弦波,原理什么的不详细说了,概括一下就是 PWM有效面积的积分 = 正弦波的有效面积。PWM的频率越快,细分的越多,锯齿也就越不明显。 做法是:首先利用正弦波取点软件,取点1000个,生成一个正弦波的数组。 PWM波的频率(F_PWM)与正弦波频率(F_SIN)之间的对应关系与

    2024年02月03日
    浏览(45)
  • 【STM32 IAP技术实现】适合小白“食用”(以STM32F103C8T6为例)

      想必大家对 单片机烧录 一词都不陌生,就是将程序下载到我们的板子(MCU)里面。常见的烧录方法有用Keil下载,或者是编译出Hex文件通过烧录软件(上位机例如:muisp、flymcu)、烧录器软件(例如:J-LINK、ST-LINK)烧录,从程序的角度来看通过烧录,它被“更新”了。

    2024年02月03日
    浏览(66)
  • 正点原子STM32F103精英版+HAL库实现4×4矩阵按键检测

    首先声明,本人小白一枚,所做的工作都是借鉴网上的大佬+自己摸索,但是都是亲测实际有效的。 因为所需要的功能开发板自带按键不够用,所以购买了4×4矩阵按键,当时购买的时候以为一个按键对应一个IO口,后来发现不是这样的,会浪费太多的IO口,4×4矩阵键盘用8个

    2024年02月06日
    浏览(43)
  • 【正点原子STM32连载】 第四十二章 DS18B20数字温度传感器实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

    1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id=609294757420 3)全套实验源码+手册+视频下载地址: http://www.openedv.com/thread-340252-1-1.html# 本章,我们将介绍STM32F103如何读取外部温度传感器的温度,来得到较为准确的环境温度。我们将学习

    2024年02月04日
    浏览(41)
  • STM32F103C8T6最小系统板实现蜂鸣器报警

    SWD方式下载程序,4线,VCC,GND。 SWDIO:Serial Wire Data Input Output,串行数据输入输出引脚,作为仿真信号的双向数据信号线,建议上拉。 SWCLK:Serial Wire Clock,串行线时钟引脚,作为仿真信号的时钟信号线,建议下拉; 蜂鸣器的IO口接在了最小系统板的PB12引脚上。 蜂鸣器的操作

    2024年02月01日
    浏览(48)
  • 摇杆按键+SG90 实现舵机云台(STM32F103C8T6)

    STM32F103C8T6最小系统板*1 SG90舵机(180°)*2 摇杆按键*1 舵机支架*1 面包板*1(非必须) 杜邦线若干 类似这种的支架,不过需要自己裁切嵌入的部分 代码很简单,主要使用ADC双通道读取两个电位器的值(实际上就是电压),通过获取到的值的范围来确定上下左右,从而来改变两

    2024年02月14日
    浏览(40)
  • stm32f103VET6和stm32f103c8t6有什么区别?

    我来终结下这个问题。 这两款单片机我都用过,其中无际单片机特训营其中一款wifi报警主机项目就是用了stm32f103c8t6。  stm32f103VET6和stm32f103c8t6都是STMicroelectronics公司推出基于ARM Cortex-M3内核的单片机。 它们在硬件规格和性能上存在一些差异,下面我详细讲解下它们的差异之处

    2024年02月15日
    浏览(39)
  • [嵌入式软件][启蒙篇][仿真平台] STM32F103实现串口输出输入、ADC采集

    上一篇:[嵌入式软件][启蒙篇][仿真平台] STM32F103实现LED、按键 学C语言时,使用的printf()函数,就是通过串口打印出来的。 跟外部器件通信,比如GPS模块、蓝牙模块、wifi模块; 两个开发板之间通信,制定私有协议。 PC电脑通信,使用上位机显示数据或控制下位机。 操作:打

    2024年01月22日
    浏览(49)
  • STM32F103RC

    ·多参考手册 ·协议USART、I2C、SPI 嵌入式系统跟ARM处理器 嵌入式系统: 专用计算机系统,以应用为中心,软硬件可裁减 组成: 硬件:(MPU)微处理器、存储器、I/O接口、输入输出设备。 软件:Embedded RTOS、应用软件。 最小系统:微控制器(MCU)、微处理器(MPU)、电源模块、

    2024年02月12日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包