SPI 2分频MOSI实现

module spi_25M(
input clk,
input rst_n,
output reg sdin,
output reg sclk,
output reg cs
);
reg [7:0]cnt;
reg[4:0]state;
reg[15:0]data;

/*
[email protected](clk)
if(!rst_n)begin sclk<=1; cnt<=0;data=16‘b000111_1111_000000;end
else if(cs==0)begin sclk<=!sclk; if(cnt==34)cnt<=0; cnt<=cnt+1;end
*/

[email protected](posedge clk or negedge rst_n ) begin
if(cs==0)begin sclk<=!sclk; cnt<=cnt+1;end
if(!rst_n)begin cs<=1;sdin<=0;state<=0;cnt<=0;data=16‘b000111_1111_000000;sclk<=1;end
else
begin
case(state)
0:if(rst_n==1)begin cs<=0;sdin<=data[15];state<=state+1;end
1:if(cnt==1) begin sdin<=data[14];state<=state+1;end
2:if(cnt==3) begin sdin<=data[13];state<=state+1;end
3:if(cnt==5) begin sdin<=data[12];state<=state+1;end
4:if(cnt==7) begin sdin<=data[11];state<=state+1;end
5:if(cnt==9) begin sdin<=data[10];state<=state+1;end
6:if(cnt==11) begin sdin<=data[9];state<=state+1;end
7:if(cnt==13) begin sdin<=data[8];state<=state+1;end

8:if(cnt==15) begin sdin<=data[7];state<=state+1;end
9:if(cnt==17) begin sdin<=data[6];state<=state+1;end
10:if(cnt==19) begin sdin<=data[5];state<=state+1;end
11:if(cnt==21) begin sdin<=data[4];state<=state+1;end
12:if(cnt==23) begin sdin<=data[3];state<=state+1;end
13:if(cnt==25) begin sdin<=data[2];state<=state+1;end
14:if(cnt==27) begin sdin<=data[1];state<=state+1;end
15:if(cnt==29) begin sdin<=data[0];state<=state+1;end
// 16:if(cnt==31) begin sdin<=data[0];state<=state+1;end
16:if(cnt==31)begin state<=0;cs<=1;cnt<=0;end
endcase
end
end
endmodule

时间: 2024-10-27 13:17:07

SPI 2分频MOSI实现的相关文章

进阶之路(基础篇) - 008 SPI数据传输(库函数方法)

主机端: 1 /********************************* 2 代码功能:SPI数据传输(主机端) 3 引脚说明: 4 SS/CS:片选(高电平屏蔽,低电平启用) 5 MOSI :主机送出信号 6 MISO :主机结收信号 7 CLK :时钟脉冲 8 SPI成员: 9 begin(); 10 功能 :初始化SPI,设置CLK,MISO和SS为输出,将SCK和MOSI拉低,将SS拉高. 11 形式 :SPI.begin(); 12 返回值:none 13 setBitOrd

基于S5PC100裸机程序之SPI(上)

作者:杨老师,华清远见嵌入式学院讲师. SPI作为应用最为广泛的通信总线协议之一,开发人员应当掌握,本章将介绍SPI总线协议的基本理论,以及S5PC100的SPI总线控制器的操作方法. 1. SPI总线协议理论 1.1  协议简介 SPI是英文Serial Peripheral Interface的缩写,该协议是由美国摩托罗拉公司推出的一种同步串行传输规范,首先由摩托罗拉公司在其MC68HCXX系列处理器上定义,后主要应 用在 EEPROM.FLASH.实时时钟.AD转换器,还有数字信号处理器和

使用36-pin的STM32输出VGA, VGA output using a 36-pin STM32

使用36-pin的STM32输出VGA 手头上有个项目需要通过单片机来控制将图像显示在LCD上,在网上搜了一阵子,发现都是使用的FPGA做的, 开始自己对FPGA不是很熟,一直在用的也是ARM系列的,终于让我找到一份至少现在看起来还是含金量蛮高的资料, 因为是英文的,这边先将它翻译一下(原文链接). 想到之前玩的一些老的视频游戏和街机游戏(很早之前,大概70/80年代左右),脑子里浮现出一个想法: 如果在今天,我们是不是可以使用成本比较低的微控制器来实现之前玩玩的那些游戏呢? 这些微控制器设计的

【Espruino】NO.15 nRF24L01+无线收发器

http://blog.csdn.net/qwert1213131/article/details/35853747 本文属于个人理解,能力有限,纰漏在所难免,还望指正! [小鱼有点电] [Espruino中文社区] nRF24L01+(或nRF24L01P)是一款工作在2.4~2.5GHz 世界通用ISM 频段的单片无线收发器芯片.无线收发器包括:频率发生器.增强型SchockBurst模式控制器.功率放大器.晶体振荡器调制器.解调器.输出功率频道选择和协议的设置可以通过SPI接口进行设置.

Arduino I2C + 温湿度传感器HTS221

主要特性 HTS221是意法半导体(STMicroelectronics)生产的小体积.数字式温湿度传感器IC.该IC目前在官网仍处在“评估”状态.其主要特性: 工作电压:1.7~3.6V 数据输出频率(ODR)可设:1Hz ~ 12.5Hz 低功耗:2μ[email protected] ODR 温度精度:给出误差典型值+/-0.5°C, 15~40°C:但注明“Typical specifications are not guaranteed.”.无误差最大值信息. 湿度精度:给出误差典型值

进监狱全攻略之 Mifare1 Card 破解

补充新闻:程序员黑餐馆系统 给自己饭卡里充钱 ,技术是双刃剑,小心,小心! 前言 从M1卡的验证漏洞被发现到现今,破解设备层出不穷,所以快速傻瓜式一键破解不是本文的重点,年轻司机将从本文中获得如下技能. 如果你想简单快速的上手,你可以选择ACR122-like,Proxmark3等容易购买到的操作简单的设备,或者有个带有NFC功能并安装有安卓Mifare Classic Tool (MCT)软件的手机也是个不错的选择. 本文基于树莓派加RC522,PN532模块试验,如果你是刚入门的Geek爱好

驱动字库芯片GT23L24M0140

?? 驱动字库芯片GT23L24M0140 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN8 开发环境:MDK5.13 mcu: stm32f407VGIGH6 字库芯片:GT23L24M0140 说明: GT23L24M0140是一款支持GB18030标准的字库芯片,有多种大小的字体可供选择. 本文驱动了其中常用的字体. 源代码: drv_font.h /***********************************

Arduino NRF24L01 应用实例

Arduino(NANO) NRF24L01 应用实例 软件准备:microBox 库(https://github.com/wastel7/microBox):构建一个微型的命令行系统Mirf 库(https://github.com/E-elektronic/Mirf):提供RF相关的核心功能以上库请自行下载 硬件准备:Arduino NANO板 x 2; NRF24L01 x 2; Other; 开发环境:VS2017 + Arduino IDE(1.8.4) 硬件连接:Server.Cl

Arduino NRF24L01 应用实例(32Bytes)

Arduino(NANO) NRF24L01 应用实例 软件准备:microBox 库(https://github.com/wastel7/microBox):构建一个微型的命令行系统Mirf 库(https://github.com/E-elektronic/Mirf):提供RF相关的核心功能以上库请自行下载 硬件准备:Arduino NANO板 x 2; NRF24L01 x 2; Other; 开发环境:VS2017 + Arduino IDE(1.8.4) 硬件连接:Server.Cl