esp8266~SPI使用,kotlin开发框架

本文介绍了如何在ESP8266中初始化和使用SPI通信,包括硬件SPI的配置和软件SPI的实现示例。同时,提到了Kotlin在开发中的应用,探讨了移动开发框架的可能性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pAttr.subMode = SpiSubMode_0;

pAttr.speed = SpiSpeed_10MHz;

pAttr.bitOrder = SpiBitOrder_MSBFirst;

SPIInit(SpiNum_HSPI, &pAttr);

}

void Send_cmd(uint8 command)

{

SpiData pDat;

pDat.cmd = command; ///< Command value

pDat.cmdLen = 1; ///< Command byte length

pDat.addr = NULL; ///< Point to address value

pDat.addrLen = 0; ///< Address byte length

pDat.data = NULL; ///< Point to data buffer

pDat.dataLen = 0; ///< Data byte length.

SPIMasterSendData(SpiNum_HSPI, &pDat);

}

/******************************************************************************

  • FunctionName : user_init

  • Description : entry of user application, init user function here

  • Parameters : none

  • Returns : none

*******************************************************************************/

void user_init(void)

{

uint8 cmd = 0xaa;

uint32 addr = 0xbbcc;

uint32 data[2] = { 0x11223344, 0x55667788 };

spi_initialize();

printf(“Starting SPI Communication\n”);

while (1) {

Send_cmd(0x34);

SpiData pDat;

pDat.cmd = cmd; ///< Command value

pDat.cmdLen = 1; ///< Command byte length

pDat.addr = &addr; ///< Point to address value

pDat.addrLen = 2; ///< Address byte length

pDat.data = data; ///< Point to data buffer

pDat.dataLen = sizeof(data); ///< Data byte length.

SPIMasterSendData(SpiNum_HSPI, &pDat);

vTaskDelay(100);

}

}

二. 软件SPI

软件SPI可能速度较慢,我自己测试了IO口速度大概是1.75翻转一次,也就是570k,比串口速度好多了。

用例:

LOCAL void spi_task(void *pvParameters)

{

SOFT_SPI_INIT();

while(1){

softspi_write_byte(0x08);

softspi_write_byte(0x03);

softspi_write_

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享

byte(0x04);

softspi_write_byte(0x0A);

vTaskDelay(5);

//printf(“spi test\n”);

}

vTaskDelete(NULL);

}

驱动代码 :

/*

  • soft spi.c

  • Created on: 2018年8月10日

  •  Author: Hynson
    

*/

#include “soft_spi.h”

/* spi write one byte */

void ICACHE_FLASH_ATTR softspi_write_byte(u8 data)

{

u8 i;

CS_0();

for(i = 0; i < 8; i++){

if (data & 0x80){

MOSI_1();

}else{

MOSI_0();

}

SCK_0();

data <<= 1;

SCK_1();

}

CS_1();

}

/* spi read one byte */

u8 ICACHE_FLASH_ATTR softspi_read_byte(void)

{

u8 read = 0;

u8 i;

CS_0();

for (i = 0; i < 8; i++){

SCK_0();

read = read<<1;

if (MISO_IS_HIGH()){

read++;

}

SCK_1();

}

CS_1();

return read;

}

/*

  • soft_spi.h

  • Created on: 2018年11月24日

  •  Author: Hynson
    

*/

#ifndef _SOFT_SPI_H

#define _SOFT_SPI_H

#include “c_types.h”

#include “gpio.h”

#include “esp8266/gpio_register.h”

#include “esp8266/eagle_soc.h”

#include “esp8266/pin_mux_register.h”

#include “esp8266/ets_sys.h”

#define SPI_MISO 12

#define SPI_MOSI 13

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值