STM32F103VET与CPLD之间的通信

发布者:独行侠客最新更新时间:2021-05-27 来源: eefocus关键字:CPLD  通信 手机看文章 扫描二维码
随时随地手机看文章

简介:stm32采用在线调试,将readdata添加到观察窗口,查看它的值,可以看到,当cpld开发板的复位键未按下时,readata=0x0058,当长按cpld复位键时readata=0x0018,按键弹起之后readata=0x0058。


1、先贴CPLD的VHDL编程:


library ieee;


use ieee.std_logic_1164.all;


use ieee.std_logic_unsigned.all;


entity stm32_cpld is


port(


cpld_cs:in std_logic;--cpld片选信号,硬件连接:通过SN74LVC4245与STM32的FSMC总线的 --FSMC_NE1(PD7)连接


rd:in std_logic; --读控制信号


wr:in std_logic;--写控制信号


cpld_rest:in std_logic;--复位信号


m_dir1:out std_logic;--控制U6(SN74LVC4245芯片)


m_dir2:out std_logic;--控制U7(SN74LVC4245芯片)


data_out:out std_logic_vector(7 downto 0) --8位数据输出


);


end stm32_cpld;


architecture behav of stm32_cpld is


signal data_buf:std_logic_vector(7 downto 0);


signal data_outctl:std_logic;


begin


m_dir1 <= '0';--控制SN74LVC4245,DIR=0,信号流向:B->A


m_dir2 <= '1';--控制SN74LVC4245,DIR=1,信号流向:A->B


data_outctl <= (not cpld_cs) and (not rd) and wr;--判断读时序


data_out <= data_buf when(data_outctl='1') else "00000000";--如果是读时序则输出数据到FSMC总线


process(cpld_rest)


begin


if(cpld_rest = '0') then


data_buf <= x"18";--x代表16进制数,如果复位键按下,则输出缓冲的数据为0x18


else


data_buf <= x"58";


end if;


end process;


end architecture behav;


管脚锁定图示:



2、stm32读取CPLD数据代码:


//----------------------------------------------------------------


#define LCD_DATA_ADD *((vu16 *)0X60000000) //数据读写地址


#define ReadData() (LCD_DATA_ADD) //数据读取


//----------------------------------------------------------------


void fsmc_init(void);


void delay_ms(unsigned int Counter);


unsigned short readdata=0;//16位


//----------------------------------------------------------------


int main(void)


{


fsmc_init();


while(1)


{


readdata=ReadData();


delay_ms(2000);


}


}


void fsmc_init(void)


{


GPIO_InitTypeDef GPIO_InitStructure;


FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure;


FSMC_NORSRAMTimingInitTypeDef p;




//设置PD口PD 0,1,4,5,7,8,9,10,11,12,14,15为FSMC模式


GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_8 | GPIO_Pin_9 |GPIO_Pin_4 |GPIO_Pin_5|


GPIO_Pin_10 |GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_14 | GPIO_Pin_15 | GPIO_Pin_7;


GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;


GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;


GPIO_Init(GPIOD, &GPIO_InitStructure);


//设置PE口PE 7,8,9,10,11,12,13,14,15为FSMC模式


GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 |


GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 |


GPIO_Pin_15;


GPIO_Init(GPIOE, &GPIO_InitStructure);


RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE); //使能FSMC时钟


p.FSMC_AddressSetupTime = 1;//地址建立时间,单位AHB时钟周期


p.FSMC_AddressHoldTime = 0; //地址保持时间,单位AHB时钟周期


p.FSMC_DataSetupTime = 2; //数据建立时间,单位AHB时钟周期


//一次读操作之后在总线上的延迟(仅适用于总线复用模式的NOR闪存操作),


p.FSMC_BusTurnAroundDuration = 0;


p.FSMC_CLKDivision = 0;//CLK时钟输出信号的周期,以HCLK周期数表示,本书不用该时钟


//用于同步成组模式的NOR闪存,定义在读取第一个数据之前等待的存储器周期数目


p.FSMC_DataLatency = 0;


p.FSMC_AccessMode = FSMC_AccessMode_B; //访问模式B,


FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1; //指定的FSMC块1


//地址和数据不复用


FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;


//存储器类型为SRAM


FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM;


//数据宽度16位


FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;


//成组访问禁止


FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;


//等待信号低有效


FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;


FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;


//决定控制器是否支持把非对齐的AHB成组操作分割成2次线性操作,仅在存储器的成组模式下有效


FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;


//在成组模式时,在等待状态之前的一个时钟周期产生NWAIT信号


FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable; //写操作允许


FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;//不使用等待信号


//不使用扩展模式


FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;


//成组操作时,禁止插入等待状态


FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;


FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p; //设置读时序配置指针


FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;//设置写时序配置指针


FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure); //FSMC初始化


FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE); //使能FSMC读写操作


}


//==============================================================================


//Subroutine: Delay1ms


//==============================================================================


void delay_ms(unsigned int Counter)


{


unsigned int i;


for(; Counter !=0; Counter--)


{


i = 10301;


while(i--);


}


}


说明:stm32初始化FSMC时设置了16位数据格式,但是我cpld只提供8位数据格式,所以接线时可以将cpld的数据线对应接到stm32的fsmc数据总线的低8位,因此在stm32处理从fsmc数据总线读取的数据时只需保留低8位,高8位数据忽略即可,比如readdata & 0x00ff。FSMC总线的编址也要注意,之前有一篇博客对此有所阐述。


实验现象:stm32采用在线调试,将readdata添加到观察窗口,查看它的值,可以看到,当cpld开发板的复位键未按下时,readata=0x0058,当长按cpld复位键时readata=0x0018,按键弹起之后readata=0x0058。

关键字:CPLD  通信 引用地址:STM32F103VET与CPLD之间的通信

上一篇:STM32的IAP方案
下一篇:关于STM32的D M A问题集锦

推荐阅读最新更新时间:2024-11-05 13:02

新基建下,无线通信技术怎样撬动万亿级工业互联网市场?
作为“新基建”七大板块之一,工业互联网已成为我国未来重点部署的核心战略,同时也是从传统消费互联网向产业互联网转型的重要方向。根据定义,工业物联网是指通过构建泛在互联、低时延高可靠的网络,将工厂内的各种设备、物料、系统、劳动者以及工厂外的产品、仓储、物流、用户等供应链各个环节连接在一起,实现各环节的泛在互联与数据顺畅流通,从而形成一个智能高效的工业生态系统。 因此,工业互联网的连接离不开各类通信技术。目前,工业领域中使用的绝大多数通信技术仍是有线技术,包括各种专用工业以太网技术和现场总线技术。但在一些特殊工业场景下,无线技术因部署简单、功能强大、使用便捷、组网灵活、覆盖区域大等优点而获得越来越高的使用率,特别是5G、LoRa等新技术
[手机便携]
数据通信基础知识汇总
一、数据通信的构成原理、交换方式及适用范围   1.数据通信的构成原理 DTE是数据终端。数据终端有分组型终端(PT)和非分组型终端(NPT)两大类。分组型终端有计算机、数字传真机、智能用户电报终端(TeLetex)、用户分组装拆设备(PAD)、用户分组交换机、专用电话交换机(PABX)、可视图文接入设备(VAP)、局域网(LAN)等各种专用终端设备;非分组型终端有个人计算机终端、可视图文终端、用户电报终端等各种专用终端。   数据电路由传输信道和数据电路终端设备(DCE)组成,如果传输信道为模拟信道,DCE通常就是调制解调器(MODEM),它的作用是进行模拟信号和数字信号的转换;如果传输信道为数字信道,DCE的作用是实现信号码
[模拟电子]
基于DSP和CPLD的金属磁记忆检测仪的设计方案
  引言   金属磁记忆检测技术自提出后一直具有良好的应用前景,但其理论研究的不足是制约该技术应用和发展的最大瓶颈。现有的理论研究认为,铁磁材料结构表层的隐性缺陷会产生法向磁场分量过零值点,使得切向磁场分量取最大值。据此市场上一些检测仪就是以法向磁场分量过零值点来判断铁磁材料应力集中区域。现今,国内外一些学者在此基础上做更多的研究,有一部分学者,通过测量磁场信号,得到了磁场梯度,根据磁场梯度来判断磁记忆损伤程度;另有一些学者,通过小波变换对采集的磁场信号进行抑制细节系数、小波指数下降消噪等多种方法的分析处理,利用多种特征量对应力集中进行定性和定量的综合判断,来提高对铁磁性金属构件疲劳损伤的识别率。   总而言之,这些方法都是在测量
[测试测量]
基于DSP和<font color='red'>CPLD</font>的金属磁记忆检测仪的设计方案
全球首家第五代移动通信网络机器人咖啡厅正式开业
据报道,韩国电信公司(KT)周二宣布,全球首家第五代移动通信()网络机器人咖啡厅“b:eat”今日在首尔瑞草区生命大楼正式开门营业。   作为咖啡品牌“甜蜜咖啡”旗下的机器人咖啡厅,该店适用韩国电信的5G无线技术,由机器人咖啡师接单并冲制咖啡。操可通过5G网络实时掌握机器人的状态信息以及咖啡、牛奶等材料的原产地、保质期和卫生状态等。韩国电信还计划继续为这台机器人添加和人工智能等功能。 韩国电信本月1日开始5G信号的商用和传播,首尔乐天世界塔展望台的人工智能向导机器人是5G网络的首个用户。
[机器人]
基于STM32中串口通信的实例分析
串口是串行接口(serial port)的简称,也称为串行通信接口或COM接口。串口通信是指采用串行通信协议(serial communication)在一条信号线上将数据一个比特一个比特地逐位进行传输的通信模式。串口按电气标准及协议来划分,包括RS-232-C、RS-422、RS485等。 在串行通信中,数据在1位宽的单条线路上进行传输,一个字节的数据要分为8次,由低位到高位按顺序一位一位的进行传送。串行通信的数据是逐位传输的,发送方发送的每一位都具有固定的时间间隔,这就要求接收方也要按照发送方同样的时间间隔来接收每一位。不仅如此,接收方还必须能够确定一个信息组的开始和结束。 常用的两种基本串行通信方式包括同步通信和异步通信
[单片机]
基于STM32中串口<font color='red'>通信</font>的实例分析
基于S3C44B0X和uClinux的Socket通信实现
嵌入式系统是指将应用程序、操作系统与计算机硬件集成在一起的系统。它以应用为中心、以计算机技术为基础,而且软硬件可以裁剪,因而是能满足应用系统对功能、可靠性、成本、体积和功耗的严格要求的专用计算机系统。 本文给出一种适合于中/低端应用的通信平台设计方案,它可支持Ethernet网络之间的数据传输,并且具有RS232、RS485、 USB等接口。 文中围绕嵌入式uClinux环境设计了基于嵌入式通信微处理器S3C44B0X的硬件通信平台,从而实现了嵌入式Socket通信。 1 嵌入式网络通信系统结构 作为一类特殊的计算机系统, 嵌入式系统通常由嵌入式处理器、嵌入式外围设备、嵌入式操作系统和嵌入式应用软件等几大部分组成。嵌入式
[单片机]
基于S3C44B0X和uClinux的Socket<font color='red'>通信</font>实现
装入CPLD/FPGA的步进电机运动控制器与驱动器
本设计实例进一步拓展了以前将步进电机驱动器集成到CPLD中的设计(参考文献1)。本实例不仅集成了驱动器,而且还集成了一个简单的单轴步进电机运动控制器。根据CPLD大小,可以将多个运动控制器设计到单一设备中。例如,单轴运动控制器采用68%或63%的可用宏单元设计到Xilinx XC95108中。运动控制器以确定的速度与时间曲线顺时针或逆时针旋转步进电机指定的步数。运动开始时,控制器对电机加速,直到其达到巡航速度,然后减速直到停止(图1)。 控制器可将电机速度调节到16 个值,V=VMAX×speed/16, 其中速度值为0到16的整数。在加速阶段,速度从1到16升高,在巡航阶段,速度保持在16,最后,在减速阶段,速度下降到1
[嵌入式]
IPSTAR卫星通信系统在石油行业的应用
  在油田开发过程中,任何一个环节稍有疏漏就会造成巨大经济损失。由于受现场设备、人员认识及技术水平等各方面的限制,难免出现错误判断造成指挥操作不当。因此,基地指挥人员和专家需要及时掌握现场动态,制定出相应的技术方案指导现场施工。但是,有些作业区位于偏远地区的沙漠、戈壁及海洋等交通不便的地方,采用单一的地面通讯手段不能将现场动态信息实时的传递回基地和各相关职能部门,很可能延误处理异常情况的宝贵时间。另外,随着石油录井、钻井技术的不断发展和规模不断扩大,各种数据信息也在日益增多,为了更好地管理这些数据,实现更大的商业效益,需要对野外的录井、钻井数据进行集中的实时分析和监控,同时还要满足客户视频通讯的需求。   由于野外作业位置的不确
[安防电子]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
更多往期活动

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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