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;
/*
always@(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
*/
always@(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
SPI 2分频MOSI实现的更多相关文章
- 基于S5PC100裸机程序之SPI(上)
作者:杨老师,华清远见嵌入式学院讲师. SPI作为应用最为广泛的通信总线协议之一,开发人员应当掌握,本章将介绍SPI总线协议的基本理论,以及S5PC100的SPI总线控制器的操作方法. 1. SPI总 ...
- SPI数据传输(库函数方法)
主机端: /********************************* 代码功能:SPI数据传输(主机端) 引脚说明: SS/CS:片选(高电平屏蔽,低电平启用) MOSI :主机送出信号 M ...
- 进阶之路(基础篇) - 008 SPI数据传输(库函数方法)
主机端: /********************************* 代码功能:SPI数据传输(主机端) 引脚说明: SS/CS:片选(高电平屏蔽,低电平启用) MOSI :主机送出信号 M ...
- STM32—SPI详解
目录 一.什么是SPI 二.SPI协议 物理层 协议层 1.通讯时序图 2.起始和停止信号 3.数据有效性 4.通讯模式 三.STM32中的SPI 简介 功能框图 1.通讯引脚 2.时钟控制逻辑 3. ...
- STC8H开发(五): SPI驱动nRF24L01无线模块
目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...
- ARM与FPGA通过spi通信设计2.spi master的实现
这里主要放两个代码第一个是正常的不使用状态机的SPI主机代码:第二个是状态机SPI代码 1.不使用状态机:特权同学<深入浅出玩转FPGA>中DIY数码相框部分代码: /////////// ...
- Jlink使用技巧之烧写SPI Flash存储芯片
前言 大多数玩单片机的人都知道Jlink可以烧写Hex文件,作为ARM仿真调试器,但是知道能烧写SPI Flash的人应该不多,本篇文章将介绍如何使用JLink来烧写或者读取SPI Flash存储器, ...
- SPI接口的FLASH
SPI flash W25Qxx: W25Q系列的spiflash.每页(Page)256B,每16个page为一个sector(扇区=4KB),每16个扇区为一个block(块=64KB) W25Q ...
- 使用36-pin的STM32输出VGA, VGA output using a 36-pin STM32
使用36-pin的STM32输出VGA 手头上有个项目需要通过单片机来控制将图像显示在LCD上,在网上搜了一阵子,发现都是使用的FPGA做的, 开始自己对FPGA不是很熟,一直在用的也是ARM系列的, ...
随机推荐
- 声音分贝的概念,dBSPL.dBm,dBu,dBV,dBFS
需要做个音频的PPM表,看着一堆的音频术语真是懵了,苦苦在网上扒了几天的文档,终于有了点收获,下面关于声音的分贝做个总结. 分贝 Decibel 分贝(dB)是一个对数单位(logarithmic u ...
- [Android]使用Dagger 2进行依赖注入 - Producers(翻译)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/6234811.html 使用Dagger 2进行依赖注入 - P ...
- 使用git进行源代码管理
git是一款非常流行的分布式版本控制系统,使用Local Repository追踪代码的修改,通过Push和Pull操作,将代码changes提交到Remote Repository,或从Remote ...
- windows10安装mysql5.7.17是这样安装的吗?
操作 全允许
- C#高级知识点&(ABP框架理论学习高级篇)——白金版
前言摘要 很早以前就有要写ABP高级系列教程的计划了,但是迟迟到现在这个高级理论系列才和大家见面.其实这篇博客很早就着手写了,只是楼主一直写写停停.看看下图,就知道这篇博客的生产日期了,谁知它的出厂日 ...
- 刷LeetCode的正确姿势——第1、125题
最近刷LeetCode比较频繁,就购买了官方的参考电子书 (CleanCodeHandbook),里面有题目的解析和范例源代码,可以省去非常多寻找免费经验分享内容和整理这些资料的时间.惊喜的是,里面的 ...
- mvc4 自定义HtmlHelper
好久没写博客了,最近只看博客不写的习惯很不好啊. 好了,最近的项目中大量的用到了表单,很多表单有特殊的编写,但是在该项目中又有很多重复的地方,这个时候若能封装成htmlhelper将大大降低工作量的. ...
- ABP框架 - 领域服务
文档目录 本节内容: 简介 例子 创建一个接口 实现服务 使用应用服务 相关论述 为什么不只用应用服务? 如何强制你使用领域服务? 简介 领域服务(或服务)用来执行领域操作和业务规则.Eric Eva ...
- 关于php语言的使用!
------php语言与JavaScript的使用 方法是相似 <script type="text/javascript"> </script>--js与 ...
- Enterprise Solution 管理软件开发框架流程实战
1 定义模块和功能 执行系统功能(SAUTSF),在系统主文件(System Master File SAMF)模块中增加功能SAMFEM,Employee Master. 给有权限的用户组分配功能S ...