feat: 全量同步 254 个常用的 Arduino 扩展库文件

This commit is contained in:
yczpf2019
2026-01-24 16:05:38 +08:00
parent c665ba662b
commit 397b9a23a3
6878 changed files with 2732224 additions and 1 deletions

View File

@@ -0,0 +1,66 @@
#include "spi.h"
#include <pthread.h>
#include <unistd.h>
#include <stdexcept>
static pthread_mutex_t spiMutex = PTHREAD_MUTEX_INITIALIZER;
bool bcmIsInitialized = false;
SPI::SPI()
{
}
void SPI::begin(int busNo, uint32_t spi_speed)
{
if (!bcmIsInitialized) {
if (!bcm2835_init()) {
return;
}
}
bcmIsInitialized = true;
bcm2835_spi_begin();
}
void SPI::beginTransaction(SPISettings settings)
{
if (geteuid() != 0) {
throw std::runtime_error("Process should run as root");
}
pthread_mutex_lock(&spiMutex);
setBitOrder(settings.border);
setDataMode(settings.dmode);
setClockDivider(settings.clck);
}
void SPI::endTransaction()
{
pthread_mutex_unlock(&spiMutex);
}
void SPI::setBitOrder(uint8_t bit_order)
{
bcm2835_spi_setBitOrder(bit_order);
}
void SPI::setDataMode(uint8_t data_mode)
{
bcm2835_spi_setDataMode(data_mode);
}
void SPI::setClockDivider(uint32_t spi_speed)
{
//bcm2835_spi_setClockDivider(spi_speed);
bcm2835_spi_set_speed_hz(spi_speed);
}
void SPI::chipSelect(int csn_pin)
{
bcm2835_spi_chipSelect(csn_pin);
delayMicroseconds(5);
}
SPI::~SPI()
{
}