SPI裸板

SPI_OLED: 用GPIO模拟SPI

  1. 将二期驱动第18课中关于i2c的文件夹at24cxx复制到另一个文件夹下并重命名为spi_i2c_adc,并在该文件下创建si工程。

  2. 明确需要创建的文件及作用。

    gpio_spi.c: 初始化spi【函数SPIInit】,提供oled.c所需的发送字节的函数【函数SPI_SendByte】;
    oled.c    : 初始化oled【OLEDInit】,在oled屏上实现打印【OLEDprint】;
    gpio_spi.h
    oled.h    
    
  3. 明确在main函数中调用的函数。

    SPIInit();      //初始化spi
    OLEDInit();     //初始化oled
    OLEDprint();    //打印
    
  4. 实现各个模块函数。

    4.1 初始化spi函数:SPIInit()


    4.2 初始化oled函数:OLEDInit()

    —初始化代码依据(数据手册)


    —代码


    —发送字节的时序图(OLED数据手册)


    注:SPI_SendByte(该函数在gpio_spi.c文件中实现)
    

    4.3 OLED打印:OLEDprint()


    注:获取字模,这里将提供一个头文件oledfont.h定义所需的字模
    

    —oledfont.h

    —Oled_Set_Pos函数依据(OLED主控芯片数据手册:SPEC UG-2864TMBEG01 )


  5. 在oled.c文件中再实现两个函数,并在OLEDInit()中调用。

    5.1 页地址模式函数

    —OledSetPageAddrMode函数依据(OLED主控芯片数据手册:SSD1306-Revision 1.1 (Charge Pump))

    —OledSetPageAddrMode函数

    5.2 清屏函数

    5.3 在OLEDInit()中调用以上两函数

  6. 编写两个头文件gpio_spi.h和oled.h,并完善(添加)各C文件所需的头文件。

    —gpio_spi.h

    —oled.h

    —main.c中所需头文件

    —gpio_spi.c中所需头文件

    —oled.c中所需头文件

  7. 最后完善在main函数中调用函数的参数。(裸板代码至此完成)

  8. 修改文件夹下的Makefile,上传文件夹,编译(错误提示大多是函数声明问题:调整函数位置),编译成功生成i2c.bin文件。

    —修改Makefile

    —编译成功

  9. 用Openjtag将i2c.bin文件烧写到开发板的nand flash中,重新上电开发板,OLED屏幕
    打印如图。

    —Openjtag烧写bin文件

    —OLED屏幕

2017/12/26 星期二 23:02:50


SPI_FLASH:芯片手册W25Q16DV

读SPI_FLASH的ID

读SPI_FLASH的ID

12/28/2017 7:40:54 PM

SPI_FLASH的擦除、烧写、读操作

SPI_FLASH的擦除、烧写、读操作

12/30/2017 12:26:09 AM


测试ADC和I2C

测试ADC

  1. 将光盘中自带的测试ADC的文件(adc_ts.c和adc_ts.h),复制到spi_i2c_adc文件夹下,并在si工程中添加这两文件。

  2. 修改文件,OLED打印ADC的电压值

    —adc_ts.c文件中的Test_Adc函数中打印

    —adc_ts.c文件包含oled.h头文件

    —在serial.c文件中添加Test_Adc函数所需的awaitkey函数,然后将其放入头文件serial.h中

    —main函数调用,并包含adc_ts.h头文件

  3. 修改Makefile,上传修改的文件后编译,出现错误提示;并第二次修改Makefile后,编译成功。

    —第一次修改Makefile

    —错误提示(未包含关于浮点运算的库)

    —第二次修改Makefile

    —编译成功

  4. 烧写i2c.bin,OLED打印(如图1);用螺丝刀逆时针旋转可调电阻,OLED打印的电压变小(如图2)。

    —图1

    —图2

测试I2C

  1. 测试对i2c设备AT24c02是否能正常进行读写操作。

  2. 在main函数中调用函数,并OLED打印

  3. (由于前面试验已将OLED屏占满)需要清除OLED某一页的函数,再将所需字符串打印。

    —清页函数

    —完善头文件oled.h

  4. 上传修改文件后编译,编译成功后将新的.bin文件烧写到开发板,重新上电,OLED屏幕打印如图(表明设备正常)。

12/30/2017 4:31:14 PM

s3c2440片内SPI控制器的使用

spi_controller

1/2/2018 12:53:24 PM

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值