!185 BLIOT_v0.2.0_1669811665462

Merge pull request !185 from pikabot/BLIOT_v0.2.0_1669811665462
This commit is contained in:
李昂 2022-11-30 12:36:25 +00:00 committed by Gitee
commit 027c8b2038
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
4 changed files with 198 additions and 65 deletions

View File

@ -1,29 +1,90 @@
#include <hosal_dac.h>
#include "../PikaStdDevice/pika_hal.h"
int pika_hal_platform_DAC_open(pika_dev* dev, char* name) {
hosal_dac_dev_t* platform_dac = pikaMalloc(sizeof(hosal_dac_dev_t));
memset(platform_dac, 0, sizeof(hosal_dac_dev_t));
dev->platform_data = platform_dac;
/* Support P1/P2 ... */
if (name[0] == 'P') {
int pin = fast_atoi(name + 1);
if (pin != 13 && pin != 14) {
/* bl602, only support P13, P14*/
__platform_printf("DAC only support P13, P14\r\n");
return -1;
}
platform_dac->config.pin = pin;
platform_dac->port = 0;
#if PIKA_DEBUG_ENABLE
__platform_printf("DAC: Open DAC on P%d\r\n", platform_dac->config.pin);
#endif
return 0;
}
#if PIKA_DEBUG_ENABLE
__platform_printf("Failed to open DAC: %s\r\n", name);
#endif
return -1;
}
int pika_hal_platform_DAC_close(pika_dev* dev) {
return -1;
}
int pika_hal_platform_DAC_read(pika_dev* dev, void* buf, size_t count) {
return -1;
}
int pika_hal_platform_DAC_write(pika_dev* dev, void* buf, size_t count) {
return -1;
}
int pika_hal_platform_DAC_ioctl_enable(pika_dev* dev) {
return -1;
}
int pika_hal_platform_DAC_ioctl_disable(pika_dev* dev) {
return -1;
hosal_dac_dev_t* platform_dac = (hosal_dac_dev_t*)dev->platform_data;
if (NULL != platform_dac) {
pikaFree(platform_dac, sizeof(hosal_dac_dev_t));
}
return 0;
}
int pika_hal_platform_DAC_ioctl_config(pika_dev* dev,
pika_hal_DAC_config* cfg) {
hosal_dac_dev_t* platform_dac = (hosal_dac_dev_t*)dev->platform_data;
/* only support 8k,16k,32k */
platform_dac->config.freq = cfg->speed;
platform_dac->config.dma_enable = 0;
cfg->max = 3300000;
cfg->vref = (pika_float)3.3;
return 0;
}
int pika_hal_platform_DAC_read(pika_dev* dev, void* buf, size_t count) {
int ret = 0;
hosal_dac_dev_t* platform_dac = (hosal_dac_dev_t*)dev->platform_data;
ret = hosal_dac_get_value(platform_dac);
#if PIKA_DEBUG_ENABLE
__platform_printf("DAC: Read %d\r\n", ret);
#endif
if (ret < 0) {
return ret;
}
*(uint32_t*)buf = ret;
return 0;
}
int pika_hal_platform_DAC_write(pika_dev* dev, void* buf, size_t count) {
hosal_dac_dev_t* platform_dac = (hosal_dac_dev_t*)dev->platform_data;
#if PIKA_DEBUG_ENALBE
__platform_printf("DAC: Write %d\r\n", *(uint32_t*)buf);
#endif
return hosal_dac_set_value(platform_dac, *(uint32_t*)buf);
}
int pika_hal_platform_DAC_ioctl_enable(pika_dev* dev) {
hosal_dac_dev_t* platform_dac = (hosal_dac_dev_t*)dev->platform_data;
if (!dev->is_enabled) {
hosal_dac_init(platform_dac);
#if PIKA_DEBUG_ENABLE
__platform_printf("DAC: Enable DAC, freq: %d\r\n",
platform_dac->config.freq);
#endif
return 0;
}
return -1;
}
int pika_hal_platform_DAC_ioctl_disable(pika_dev* dev) {
hosal_dac_dev_t* platform_dac = (hosal_dac_dev_t*)dev->platform_data;
if (dev->is_enabled) {
hosal_dac_finalize(platform_dac);
return 0;
}
return -1;
}

View File

@ -1,30 +1,129 @@
#include <hosal_spi.h>
#include "../PikaStdDevice/pika_hal.h"
static int _num2pin(int num, uint8_t* mosi, uint8_t* miso, uint8_t* scli) {
/*********************** BL602 **************************
* SPI0 -----> MOSI:P20, MISO:P0, SCLK:P22
*/
switch (num) {
case 0:
*mosi = 20;
*miso = 0;
*scli = 22;
break;
default:
return -1;
}
#if PIKA_DEBUG_ENABLE
__platform_printf("SPI%d: mosi:%d, miso:%d, scli:%d\r\n", num, *mosi, *miso,
*scli);
#endif
return 0;
}
int pika_hal_platform_SPI_open(pika_dev* dev, char* name) {
hosal_spi_dev_t* platform_spi = pikaMalloc(sizeof(hosal_spi_dev_t));
memset(platform_spi, 0, sizeof(hosal_spi_dev_t));
dev->platform_data = platform_spi;
/* Support SPI0, SPI1, SPI2 */
if (name[0] == 'S' && name[1] == 'P' && name[2] == 'I') {
int spi_num = fast_atoi(name + 3);
platform_spi->port = 0;
if (0 == _num2pin(spi_num, &platform_spi->config.pin_mosi,
&platform_spi->config.pin_miso,
&platform_spi->config.pin_clk)) {
return 0;
} else {
__platform_printf("SPI: Open SPI%d failed\r\n", spi_num);
return -1;
}
}
return -1;
}
int pika_hal_platform_SPI_close(pika_dev* dev) {
return -1;
}
int pika_hal_platform_SPI_read(pika_dev* dev, void* buf, size_t count) {
return -1;
}
int pika_hal_platform_SPI_write(pika_dev* dev, void* buf, size_t count) {
return -1;
}
int pika_hal_platform_SPI_ioctl_enable(pika_dev* dev) {
return -1;
}
int pika_hal_platform_SPI_ioctl_disable(pika_dev* dev) {
return -1;
hosal_spi_dev_t* platform_spi = (hosal_spi_dev_t*)dev->platform_data;
if (NULL != platform_spi) {
pikaFree(platform_spi, sizeof(hosal_spi_dev_t));
}
return 0;
}
int pika_hal_platform_SPI_ioctl_config(pika_dev* dev,
pika_hal_SPI_config* cfg) {
hosal_spi_dev_t* platform_spi = (hosal_spi_dev_t*)dev->platform_data;
if (!dev->is_enabled) {
platform_spi->port = 0;
platform_spi->config.dma_enable = 0;
platform_spi->config.freq = cfg->speed;
platform_spi->p_arg = NULL;
switch (cfg->master_or_slave) {
case PIKA_HAL_SPI_MASTER:
platform_spi->config.mode = HOSAL_SPI_MODE_MASTER;
break;
case PIKA_HAL_SPI_SLAVE:
platform_spi->config.mode = HOSAL_SPI_MODE_SLAVE;
break;
default:
return -1;
}
switch (cfg->mode) {
case PIKA_HAL_SPI_MODE_0:
platform_spi->config.polar_phase = 0;
break;
case PIKA_HAL_SPI_MODE_1:
platform_spi->config.polar_phase = 1;
break;
case PIKA_HAL_SPI_MODE_2:
platform_spi->config.polar_phase = 2;
break;
case PIKA_HAL_SPI_MODE_3:
platform_spi->config.polar_phase = 3;
break;
default:
return -1;
}
#if PIKA_DEBUG_ENABLE
__platform_printf("SPI: freq:%d, mode:%d, polar_phase:%d\r\n",
platform_spi->config.freq, platform_spi->config.mode,
platform_spi->config.polar_phase);
#endif
}
return 0;
}
int pika_hal_platform_SPI_ioctl_enable(pika_dev* dev) {
if (!dev->is_enabled) {
hosal_spi_dev_t* platform_spi = (hosal_spi_dev_t*)dev->platform_data;
#if PIKA_DEBUG_ENABLE
__platform_printf(
"SPI: Open SPI%d, freq:%d, mode:%d, polar_phase:%d\r\n",
platform_spi->port, platform_spi->config.freq,
platform_spi->config.mode, platform_spi->config.polar_phase);
#endif
hosal_spi_init(platform_spi);
return 0;
}
return -1;
}
int pika_hal_platform_SPI_ioctl_disable(pika_dev* dev) {
if (dev->is_enabled) {
hosal_spi_dev_t* platform_spi = (hosal_spi_dev_t*)dev->platform_data;
hosal_spi_finalize(platform_spi);
return 0;
}
return -1;
}
int pika_hal_platform_SPI_write(pika_dev* dev, void* buf, size_t count) {
hosal_spi_dev_t* platform_spi = (hosal_spi_dev_t*)dev->platform_data;
pika_hal_SPI_config* cfg = (pika_hal_SPI_config*)dev->ioctl_config;
return hosal_spi_send(platform_spi, buf, count, cfg->timeout);
}
int pika_hal_platform_SPI_read(pika_dev* dev, void* buf, size_t count) {
hosal_spi_dev_t* platform_spi = (hosal_spi_dev_t*)dev->platform_data;
pika_hal_SPI_config* cfg = (pika_hal_SPI_config*)dev->ioctl_config;
return hosal_spi_recv(platform_spi, buf, count, cfg->timeout);
}

View File

@ -1,30 +0,0 @@
#include "../PikaStdDevice/pika_hal.h"
int pika_hal_platform_UART_open(pika_dev* dev, char* name) {
return -1;
}
int pika_hal_platform_UART_close(pika_dev* dev) {
return -1;
}
int pika_hal_platform_UART_read(pika_dev* dev, void* buf, size_t count) {
return -1;
}
int pika_hal_platform_UART_write(pika_dev* dev, void* buf, size_t count) {
return -1;
}
int pika_hal_platform_UART_ioctl_enable(pika_dev* dev) {
return -1;
}
int pika_hal_platform_UART_ioctl_disable(pika_dev* dev) {
return -1;
}
int pika_hal_platform_UART_ioctl_config(pika_dev* dev,
pika_hal_UART_config* cfg) {
return -1;
}

View File

@ -441,4 +441,7 @@ releases = [ "v1.0.0 ca8fe36d68be16722317860394fdf78c620e3e2d" ]
[[packages]]
name = "BLIOT"
releases = [ "v0.1.0 4599ce8681d293a5cc7682115205ab5e85e9b5e8" ]
releases = [
"v0.1.0 4599ce8681d293a5cc7682115205ab5e85e9b5e8",
"v0.2.0 eee8e1848eed77f3ebed777230104ebb4dfc3263"
]