TM4C123G 硬件spi

前言

这里用的是TM4C123FH6PM 微控制器的同步串行接口 (SSI) 模块
这是是的管脚说明

根据所设置的数据大小,每个数据帧的长度均在 4~16 位之间,并且从最高有效位 (MSB) 开始发送。通过对 SSICR0 寄存器中的 FRF 位进行设置,用户可选择三种基本的帧类型:
■ Texas Instruments 同步串行
■ 飞思卡尔SPI格式
■ MICROWIRE格式

这里用的SPI格式
下面上代码

SPI0初始化

void spi_init()  //SPI0初始化
{SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);//打开时钟GPIOPinConfigure(GPIO_PA2_SSI0CLK);GPIOPinConfigure(GPIO_PA3_SSI0FSS);GPIOPinConfigure(GPIO_PA4_SSI0RX);GPIOPinConfigure(GPIO_PA5_SSI0TX);//初始化引脚GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_5 | GPIO_PIN_4 | GPIO_PIN_2);//配置引脚供SSI外设使用。SSIConfigSetExpClk(SSI0_BASE, SysCtlClockGet(), SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER, SSI0_BitRate, 8);SSIEnable(SSI0_BASE);//使能}

SSIConfigSetExpClk()函数
关于传输协议有四种
用来选择SPI的极性Polarity和相位Phase,配置SPI的空闲电平和数据采样的时刻。

关于工作模式有主模式,从模式,开漏模式

/* SPI读写函数 */

uint8_t spi_rw(uint8_t data)
{uint32_t ui32Data;uint8_t ui8Data;SSIDataPut(SSI0_BASE, data);while(SSIBusy(SSI0_BASE));SSIDataGet(SSI0_BASE, &ui32Data);ui8Data = ui32Data & 0xff;while(SSIBusy(SSI0_BASE)); return(ui8Data);
}
//即控制SSInFss
void spi_cs_enable()
{GPIOPinWrite(Spi_cs_port, Spi_cs_pin, 0);
}void spi_cs_disable()
{GPIOPinWrite(Spi_cs_port, Spi_cs_pin, Spi_cs_pin);
}
//在指定位置写指定长度的数据
//reg:寄存器(位置)
//*pBuf:数据指针
//len:数据长度
void spi_write_buf(uint8_t reg, uint8_t *pBuf, uint8_t len)
{uint8_t i;spi_cs_enable();spi_rw(reg);for(i = 0; i < len; i++){spi_rw(*pBuf++);}spi_cs_disable();
}
void spi_read_buf(uint8_t reg, uint8_t *pBuf, uint8_t len)
{uint8_t i;spi_cs_enable(); spi_rw(reg);for(i = 0; i < len; i++){pBuf[i] = spi_rw(0xff);}spi_cs_disable();
}

完整版可以参考我的Github或者TM4C123G硬件spi.zip

TM4C123G 硬件spi相关推荐

  1. 【0.96寸 OLED屏实现1500Fps的帧率】STM32 软件、硬件SPI、I2C驱动总结

    目录 SPI版 OLED SPI 端口定义 七针OLED引脚定义 六针OLED引脚定义 软件SPI 硬件SPI 启用DMA 帧率测试 I2C 版 软件I2C 硬件I2C DMA STM32F103VE ...

  2. MSP430杂谈--AD7793硬件SPI驱动与模拟SPI驱动

    最近项目中用到了AD7793读取铂电阻值来得到相应的温度,编写了基于MSP430的硬件驱动程序和模拟驱动程序,并且能成功运行,现在记录一下分享给大家. AD7793硬件IIC驱动完整版下载链接:htt ...

  3. STM32G0 硬件SPI+DMA+LL库,最高通讯速率32MBit/s

    硬件SPI+DMA+LL库代码连接STM32G0硬件SPI+DMA+LL库,最高通讯速率32MBit/s-嵌入式文档类资源-CSDN下载 近期在写0.96寸OLED显示屏驱动的程序,之前试过用软件模拟 ...

  4. 梳理STM32F429之通信传输部分---NO.8 硬件SPI

    目录 一.STM32 的 SPI 特性及架构: 二.SPI 初始化结构体详解: 三.硬件SPI-读写串行 FLASH 实验 一.STM32 的 SPI 特性及架构: 1.引脚简介: (1)   (Sl ...

  5. 【STM32】HAL库在7针脚0.96寸OLED屏上的移植---硬件SPI(一)

    目录 SPI背景和接线 1.什么是SPI 2.如何接线 STM32CubeMX部分 1.配置时钟 2.配置SPI 3.工程生成 MDK 5 部分 1.移植OLED文件 2.修改引脚 3.修改main函 ...

  6. STM32硬件SPI通过fm17550读取身份证UID,识别银行卡,识别TYPEA与TYPEB

    上面是我的微信和QQ群,欢迎新朋友的加入. 目录 1.硬件平台 2.驱动实现 3.循环扫卡测试程序 4.TYPEB射频卡扫描 5.TYPEA射频卡扫描 6.身份证UID读取 1.硬件平台 1.STM3 ...

  7. stm8 硬件SPI

    第一步:stm8 SPI简介 在配置SPI相关寄存器时要注意时钟信号的相位和极性. 这次我们使用的是stm8驱动SO-8封装的DAC8830,使其输出一个方波. DAC8830引脚说明和时序: CS是 ...

  8. enc28j60 linux 驱动_linux enc28j60网卡驱动移植(硬件spi和模拟spi)

    本来想移植DM9000网卡的驱动,无奈硬件出了点问题,通过杜邦线链接开发板和DM9000网卡模块,系统上电,还没加载网卡驱动就直接崩溃了,找不到原因...刚好手上有一个enc28j60的网卡模块,于是 ...

  9. DSP28335的硬件SPI使用(无FIFO)总结

    目录 前言 问题的提出 问题的解决 说在最后 前言 这两天折腾了一个旋变器解算模块的使用,类似于这种器件一般都是使用通信的方式写入芯片对应的寄存器的数据从而初始化芯片或得到可编程的结果:反之,我们也需 ...

最新文章

  1. 当Swin Transformer遇上DCN,清华可变形注意力Transformer模型优于多数ViT
  2. 【python pandas excel操作】
  3. node.js async await 配合Promise对象使用
  4. Linux Tricks —— 快速清空文本文件内容、文本内容追加(tee)
  5. 学习小实例--滚动条
  6. 蓝桥杯- 煤球数目-java
  7. 初学java--变量、属性、方法命名以及类命名规范
  8. 猎豹网c 语言程序设计,[C/C++基础] 猎豹网校 C++ Primer初级/中级/高级合集发布 猎豹网校Primer视频教程...
  9. 数字孪生技术方案下的智慧城市建设治理体系优势
  10. mongodb数据的导入导出备份恢复
  11. 语音识别使用推荐(讯飞、百度、腾讯、云知声等)
  12. 为什么JBX写的代码在编译时,总是少字符呢?
  13. GNN在推荐系统的应用——>GC-MC与STAR-GCN
  14. csp刷题总结(如此编码python版本)
  15. c++动态规划法求解斐波那契数列
  16. 一个常用的电池包电压检测电路
  17. 什么是蛋白质结构域?什么是HTH?
  18. c语言中要求对象只能为整数的运算符是,以下正确的叙述是( ) 答案:在C程序中, %是只能用于整数运算 的运算符...
  19. 双目视觉目标追踪及三维坐标获取—python(代码)
  20. 27- OCR 光功率计数码管字符识别

热门文章

  1. json字符串转json对象(前端json字符串转json对象)
  2. 用java web start来发布jbpm(三)
  3. CSS 中 a 标签为什么不能继承父类的颜色?
  4. libreCAD源码阅读笔记4
  5. ARMv7 汇编在线调试工具
  6. SSH(Struts,Spring,Hibernate )和SSM(SpringMVC,Spring,MyBatis )的区别,抽丝剥茧的给你讲清楚
  7. 敏捷开发讲义---如何打造敏捷团队
  8. QT的QList排序
  9. 不知怎么选,用RFM模型看舔狗质量!
  10. 字符串和字符串标准库