STM32 SPI和TM1628通信

发布者:科技奇才最新更新时间:2022-05-29 来源: eefocus关键字:STM32  SPI  TM1628  通信 手机看文章 扫描二维码
随时随地手机看文章

uint8_t TM1628_WritePro(void)

{undefined

  //SPI1->CR1 |= SPI_Direction_1Line_Tx ;

  SPI1->CR1  = 0xc3ff;

  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);

  SetSTB;

  DelayXu(5);

  ClrSTB;

  DelayXu(2);

  SPI_SendData8(SPI1,0x00);

  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_BSY) == SET);          

  SetSTB;

  DelayXu(5);

  ClrSTB;

  DelayXu(2);

  SPI_SendData8(SPI1,0x44);

  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_BSY) == SET);              

  SetSTB;

  DelayXu(5);

  ClrSTB;

  DelayXu(2);

  SPI_SendData8(SPI1,0xC0);

  SPI_SendData8(SPI1,ShowValue[0]);

  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_BSY) == SET);         

  SetSTB;

  DelayXu(5);

  ClrSTB;

  DelayXu(2);

  SPI_SendData8(SPI1,0xC2);

  SPI_SendData8(SPI1,ShowValue[1]);

  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_BSY) == SET); 

  SetSTB;

  DelayXu(5);

  ClrSTB;

  DelayXu(2);

  SPI_SendData8(SPI1,0xC4);

  SPI_SendData8(SPI1,ShowValue[2]);

  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_BSY) == SET); 

  SetSTB;

  DelayXu(5);

  ClrSTB;

  DelayXu(2);

  SPI_SendData8(SPI1,0xC6);

  SPI_SendData8(SPI1,ShowValue[3]);

  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_BSY) == SET);  

  SetSTB;

  DelayXu(5);

  ClrSTB;

  DelayXu(2);

  SPI_SendData8(SPI1,0x89);

  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_BSY) == SET);              

  SetSTB; 

  return 0;

}


uint8_t TM1628_ReadPro(void)

{undefined

  uint8_t KeyTemp[4] = {0};

  SPI1->CR1  = 0xc3ff;

  //SPI1->CR1  |= SPI_Direction_1Line_Tx;//

  SetSTB;

  DelayXu(5);

  ClrSTB;

  DelayXu(2);

  SPI_SendData8(SPI1,0x42);

  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_BSY) == SET);

  DelayXu(5);

   

  SPI1->CR1  &= ~SPI_EN; 

  SPI1->CR1  &= SPI_Direction_Rx; 

  SPI1->CR1  |= SPI_EN;

  DelayXu(5);

  while((SPI1->SR&SPI_I2S_FLAG_RXNE) == RESET);

  KeyTemp[0] = SPI_ReceiveData8(SPI1);

  while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);

  KeyTemp[1] = SPI_ReceiveData8(SPI1);

  while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);

  KeyTemp[2] = SPI_ReceiveData8(SPI1);

  while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);

  KeyTemp[3] = SPI_ReceiveData8(SPI1);

  //SPI1->CR1  |= SPI_Direction_1Line_Tx;//

  SetSTB;

  SPI1->CR1  = 0xc3ff;

   

  //检验按键是否有效  若接线开路则返回错误

  if(KeyTemp[1]&0xef) return 0 ;

  if(KeyTemp[2]&0xed) return 0 ;

  if(KeyTemp[3]&0xfd) return 0 ;

   

  if(KeyTemp[1]&0x10) KeyValue |=  BIT0 ;

  else                KeyValue &= ~BIT0 ;

   

  if(KeyTemp[2]&0x10) KeyValue |=  BIT1 ;

  else                KeyValue &= ~BIT1 ;

   

  if(KeyTemp[2]&0x02) KeyValue |=  BIT2 ;

  else                KeyValue &= ~BIT2 ;

   

  if(KeyTemp[3]&0x02) KeyValue |=  BIT3 ;

  else                KeyValue &= ~BIT3 ;

   

  return 1;

}

关键字:STM32  SPI  TM1628  通信 引用地址:STM32 SPI和TM1628通信

上一篇:STM32F334之EXTI中断老是进不去
下一篇:初学stm32-外部中断(EXTI按键中断)

推荐阅读最新更新时间:2024-11-09 21:51

STM32最小系统硬件组成部分
STM32最小系统硬件组成 最小系统为单片机工作的最低要求,不含外设控制,原理简单,分析最小系统是STM32入门的基础。 组成: 电源 复位 时钟 调试/下载接口 启动 电源 3.3V的电源从这里接入,其中电容起到滤波的作用。 复位电路 当RESET引脚被拉低产生外部复位时,产生复位脉冲,从而使系统复位。 有三种复位方式: 上电复位 手动复位 程序自动复位 上电复位,在上电瞬间,电容充电,RESET出现短暂的低电平,该低电平持续时间由电阻和电容共同决定,需求的复位信号持续时间约在1ms左右,计算方式如下: t = 1.1RC(固定计算公式) 1.1*10K*0.1uF=1.1ms 手动复位:按键按下时,RESET与地导
[单片机]
<font color='red'>STM32</font>最小系统硬件组成部分
STM32读写保护功能及设置
STM32读写保护功能及设置 功能:: 读保护设置后将不能读出flash的内容;当解除读保护的时候stm32会自动擦出整篇flash; 设置: 读保护设置: 在程序的开头加入“读保护”代码,即实现了读保护功能;(每次程序运行先 开保护) 解除读保护:解除读保护可以设置在按键里面,方便实现解锁,也不可不设; (1)设置读保护: if(FLASH_GetReadOutProtectionStatus()!=SET) { FLASH_Unlock(); //不解锁FALSH也可设置读保护 FLASH_ReadOutProtection(ENABLE); FLASH_Lock();//上锁 } (2)解
[单片机]
STM32程序的烧录方式 与 ISP一键下载
一、启动模式(Boot modes) 阅读:STM32中文参考手册_V10.pdf 查看启动配置(Boot modes)。 在STM32F10xxx里,可以通过BOOT 引脚选择三种不同启动模式。 STM32三种启动模式对应的存储介质均是芯片内置的,它们是: 1)用户闪存 = 芯片内置的Flash。 2)系统存储器 = 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序。这个区 域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM区。 3)SRAM = 芯片内置的RAM区,就是内存啦。 在每个STM32的芯片上都有两个管脚BOOT0和BOOT1,这两个管脚在芯片复位时的电平
[单片机]
<font color='red'>STM32</font>程序的烧录方式 与 ISP一键下载
STM32芯片UID话题
绝大多数STM32系列的芯片都在固定的地方放置了长度为96位的唯一身份识别码,简称UID,只有极少数STM32系列芯片内部没有该UID,比方超值型STM32F0x0系列,STM32F100系列。具体到哪颗芯片到底有没有UID,在芯片数据手册的首页都有明确的说明,无需猜测。如下图所以: 芯片所对应的参考手册里,有对该UID存放地址的详细介绍。地址因不同系列或子序列而不同。 关于这个UID常有人有些疑问,有几个问题在这里稍微总结下: 1、有无问题。上面说了绝大部分STM32都内置UID,具体以查看数据手册为准。 2、唯一性问题。该UID的唯一性是靠96位这个整体来保证其唯一性,你若截取部分就不保证了。 3、内容问题。有人对这个
[单片机]
<font color='red'>STM32</font>芯片UID话题
不同的电平信号的MCU怎么通信
今天我们来讲讲,下面这个“电平转换”电路,理解后令人心情愉快。电路设计其实也可以很有趣。先说一说这个电路的用途:当两个MCU在不同的工作电压下工作(如MCU1 工作电压5V;MCU2 工作电压3.3V),那么MCU1 与MCU2之间怎样进行串口通信呢?很明显是不能将对应的TX、RX引脚直接相连的,否测可能造成较低工作电压的MCU烧毁!下面的“电平双向转换电路”就可以实现不同VDD(芯片工作电压)的MCU之间进行串口通信。 该电路的核心在于电路中的MOS场效应管(2N7002)。他和三极管的功能很相似,可做开关使用,即可控制电路的通和断。不过比起三极管,MOS管有挺多优势,后面将会详细讲起。下图是MOS管实物3D图和电路图
[单片机]
STM32串口IAP实验详解
一、关于IAP的简介 关于STM32的常用编程方式分为以下两种: 在线编程(ICP);通过SWD/JTAG协议下载应用程序到微控制器中。 在程序中编程(IAP);通过一种通信接口(UART、USB、SPI等)将程序下载到应用数据存储器中。 IAP(In Application Programming),在应用中编程,目的是为了在线升级使用,在产品发布后可以通过预留的通信接口将更新后的程序下载到数据存储器中。(更新的数据可以使用上网的模块从服务器上获取数据实现远程更新) 二、IAP的原理 IAP其实将传统的程序分为了两个部分,一个称为BootLoader区,另一个称为APP区域(用于存放用户升级的程序)。 其中
[单片机]
<font color='red'>STM32</font>串口IAP实验详解
STM32之旅3——时钟树
STM32F1是M3内核,它的时钟数很庞大,让一个初学者去看,估计会很吃力,和我们入门的8051单片机的时钟不同,这里又倍频、又分频,而且还分成好多个时钟,不同的外设时钟不一样。 总感觉不都明了,后来在STM32CubeMX中看到了时钟配置,这个看起来就明了多了
[单片机]
<font color='red'>STM32</font>之旅3——时钟树
USB光纤通信产品的发展
提起USB光纤产品,也许应用最普遍的是USB光纤声卡,但是这种娱乐产品不属于本文介绍的范围,所以本文的名称界定为USB光纤通信产品,特别是用于工业通信的产品。本文以波仕电子的系列USB光纤通信产品为例,介绍了如何将USB接口与光纤通信技术进行有机的技术结合,创造出一批全新的产品。 现在USB接口已经开始逐步取代传统的PS/2鼠标口、PS/2键盘口、CENTRONICS打印口、RS-232串口等。USB将是未来重要的PC机工业通信接口之一,用于实现工业通信以及存储、编程等。USB标准也历经了从USB1.0低速1.5M、到USB2.0全速12M、再到USB2.0高速480M的发展过程。虽然现在正在出现所谓USB3.0,但是由于不兼容于
[嵌入式]

推荐帖子

LPC1500体验+@3-GPIO中断【系列教程】
本帖最后由fxyc87于2014-7-509:48编辑 复制代码此例程功能:开启中断,指示灯指示,按下亮,再按下灭。所有内容均为原创#includelpc15xx.hintmain(){LPC_SYSCON-SYSAHBCLKCTRL0|=113|114|115|116;//开启iocon,p0,p1,p2时钟LPC_GPIO_PORT-B=1;//p1.1(蓝色)不点亮LPC_G
fxyc87 NXP MCU
目前要做一个便携式超声检测仪器,基于wince的,请问用什么开发工具比较好?evc or vs2005?
目前要做一个便携式超声检测仪器,基于wince的,请问用什么开发工具比较好?evcorvs2005?谢谢,请问哪位大虾能帮帮我,感激不尽!目前要做一个便携式超声检测仪器,基于wince的,请问用什么开发工具比较好?evcorvs2005?VS2005,微软已经不supportEVC了。VS2005,微软已经不supportEVC了。‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’这个我知道,用evc的最高版本也不
yydwhy WindowsCE
【晒心得】STM32F03开发板--系统时钟设置SysTick
【晒心得】STM32F03开发板--系统时钟设置首先我先分析下startup_stm32f0xx.s启动代码,其中/*Calltheclocksystemintitializationfunction.*/blSystemInit/*Calltheapplication\'sentrypoint.*/blmain发现开发板上电启动过程中,先调用了SystemInit()函数,再进入main()函数。SystemInit()函
qinkaiabc stm32/stm8
FPGA设计指南:器件、工具和流程.pdf
今天生日,发个资料FPGA设计指南:器件、工具和流程.pdf老是瞎起哄!
白丁 FPGA/CPLD
全民DIY ACDC实验电源
前段时间曾透露过,打算联手资深专业人员参与本次数控电源的DIY活动并且尝试一种全新的模式,系统及电路将围绕该模式展开,因需说明的内容较多,故单独发帖而未利用站方提供的现成报名模板。DIY活动的中心应该是有益、有趣、实用。通过DIY学到知识、丰富经验可谓“有益”,DIY自己喜欢的东西可以说“有趣”,实用嘛,一般而言,对从0开始的初学者而言往往比较困难,缺乏实用性的DIY作品也会降低前两者的质量,特别的,不同DIY活动的参与者如
chunyang DIY/开源硬件专区
89s52加密问题
我最近遇到一个奇怪问题,公司新做了一块板子。烧写程序后,怎么弄都无法运行,甚至在将程序中所有部分都删掉,只留下打狗部分都无法运行。后来我在烧写设置中,无意将加密模式改为LockMode4后,并选上加密,程序运行就都正常了。我用的是双龙isp烧写器。不知道这个是怎么回事,是和硬件有关系还是和软件设置有关系?我们做的其他产品也用的同样的mcu,但从来没有遇到过这种情况。请各位大侠不吝赐教!89s52加密问题找个其他的板子测试一下用同样的烧写器,同样的方法烧写,看是否成功,排除是
flyinsky1215 嵌入式系统
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved