Skip to content

Commit 2873555

Browse files
author
Kyle Kearney
committed
Update CSP to latest
Update HAL adapter for interface changes Misc minor fixes to HAL adapter
1 parent b005bf2 commit 2873555

File tree

121 files changed

+6547
-4954
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

121 files changed

+6547
-4954
lines changed

targets/TARGET_Cypress/TARGET_PSOC6/cy_analogout_api.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ void analogout_free(dac_t *obj)
4040

4141
void analogout_write(dac_t *obj, float value)
4242
{
43-
MBED_ASSERT(value >= 0.0 && value <= 100.0f);
44-
analogout_write_u16(obj, (uint16_t)(value * 0.01f * UINT16_MAX));
43+
MBED_ASSERT(value >= 0.0 && value <= 1.0f);
44+
analogout_write_u16(obj, (uint16_t)(value * UINT16_MAX));
4545
}
4646

4747
void analogout_write_u16(dac_t *obj, uint16_t value)
@@ -51,7 +51,7 @@ void analogout_write_u16(dac_t *obj, uint16_t value)
5151

5252
float analogout_read(dac_t *obj)
5353
{
54-
return 100.0f / UINT16_MAX * analogout_read_u16(obj);
54+
return analogout_read_u16(obj) / UINT16_MAX;
5555
}
5656

5757
uint16_t analogout_read_u16(dac_t *obj)

targets/TARGET_Cypress/TARGET_PSOC6/cy_crc_api.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
#include "mbed_assert.h"
2020
#include "mbed_error.h"
2121
#include "cyhal_crc.h"
22-
#include "cyhal_crc_impl.h"
2322

2423
#if DEVICE_CRC
2524

targets/TARGET_Cypress/TARGET_PSOC6/cy_flash_api.c

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,9 @@ int32_t flash_read(flash_t *obj, uint32_t address, uint8_t *data, uint32_t size)
5050

5151
int32_t flash_program_page(flash_t *obj, uint32_t address, const uint8_t *data, uint32_t size)
5252
{
53-
MBED_ASSERT(0 == (address % obj->info.page_size));
54-
MBED_ASSERT(0 == (size % obj->info.page_size));
55-
for (uint32_t offset = 0; offset < size; offset += obj->info.page_size) {
53+
MBED_ASSERT(0 == (address % obj->info.blocks[0].page_size));
54+
MBED_ASSERT(0 == (size % obj->info.blocks[0].page_size));
55+
for (uint32_t offset = 0; offset < size; offset += obj->info.blocks[0].page_size) {
5656
if (CY_RSLT_SUCCESS != cyhal_flash_program(&(obj->flash), address + offset, (const uint32_t *)(data + offset))) {
5757
return -1;
5858
}
@@ -62,30 +62,30 @@ int32_t flash_program_page(flash_t *obj, uint32_t address, const uint8_t *data,
6262

6363
uint32_t flash_get_sector_size(const flash_t *obj, uint32_t address)
6464
{
65-
if (address < obj->info.start_address || address >= obj->info.start_address + obj->info.size) {
65+
if (address < obj->info.blocks[0].start_address || address >= obj->info.blocks[0].start_address + obj->info.blocks[0].size) {
6666
return MBED_FLASH_INVALID_SIZE;
6767
}
68-
return obj->info.sector_size;
68+
return obj->info.blocks[0].sector_size;
6969
}
7070

7171
uint32_t flash_get_page_size(const flash_t *obj)
7272
{
73-
return obj->info.page_size;
73+
return obj->info.blocks[0].page_size;
7474
}
7575

7676
uint32_t flash_get_start_address(const flash_t *obj)
7777
{
78-
return obj->info.start_address;
78+
return obj->info.blocks[0].start_address;
7979
}
8080

8181
uint32_t flash_get_size(const flash_t *obj)
8282
{
83-
return obj->info.size;
83+
return obj->info.blocks[0].size;
8484
}
8585

8686
uint8_t flash_get_erase_value(const flash_t *obj)
8787
{
88-
return obj->info.erase_value;
88+
return obj->info.blocks[0].erase_value;
8989
}
9090

9191
#ifdef __cplusplus

targets/TARGET_Cypress/TARGET_PSOC6/cy_gpio_api.c

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,22 @@
2929
extern "C" {
3030
#endif
3131

32+
void apply_config(gpio_t *obj)
33+
{
34+
MBED_ASSERT(obj->pin != CYHAL_NC_PIN_VALUE);
35+
36+
cy_rslt_t rslt;
37+
if (CY_RSLT_SUCCESS != (rslt = cyhal_gpio_configure(obj->pin, obj->direction, obj->drive_mode))) {
38+
MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_DRIVER_GPIO, CY_RSLT_GET_CODE(rslt)), "cyhal_gpio_configure failed");
39+
}
40+
41+
if (obj->drive_mode == PullUp) {
42+
gpio_write(obj, 1);
43+
} else if (obj->drive_mode == PullDown) {
44+
gpio_write(obj, 0);
45+
}
46+
}
47+
3248
uint32_t gpio_set(PinName pin)
3349
{
3450
// unimplemented (appears to be unused)
@@ -40,36 +56,35 @@ void gpio_init(gpio_t *obj, PinName pin)
4056
obj->pin = pin;
4157
if (pin != CYHAL_NC_PIN_VALUE) {
4258
cy_rslt_t rslt;
43-
if (CY_RSLT_SUCCESS != (rslt = cyhal_gpio_init(obj->pin, CYHAL_GPIO_DIR_INPUT, CYHAL_GPIO_DRIVE_ANALOG, false))) {
59+
obj->direction = CYHAL_GPIO_DIR_INPUT;
60+
obj->drive_mode = CYHAL_GPIO_DRIVE_NONE;
61+
if (CY_RSLT_SUCCESS != (rslt = cyhal_gpio_init(obj->pin, obj->direction, obj->drive_mode, false))) {
4462
MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_DRIVER_GPIO, CY_RSLT_GET_CODE(rslt)), "cyhal_gpio_init failed");
4563
}
4664
}
4765
}
4866

4967
void gpio_mode(gpio_t *obj, PinMode mode)
5068
{
51-
MBED_ASSERT(obj->pin != CYHAL_NC_PIN_VALUE);
52-
cy_rslt_t rslt;
53-
if (CY_RSLT_SUCCESS != (rslt = cyhal_gpio_drivemode(obj->pin, mode))) {
54-
MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_DRIVER_GPIO, CY_RSLT_GET_CODE(rslt)), "cyhal_gpio_mode failed");
55-
}
56-
if (mode == PullUp) {
57-
gpio_write(obj, 1);
58-
} else if (mode == PullDown) {
59-
gpio_write(obj, 0);
60-
}
69+
obj->drive_mode = mode;
70+
apply_config(obj);
6171
}
6272

6373
void gpio_dir(gpio_t *obj, PinDirection direction)
6474
{
6575
if (direction == PIN_INPUT) {
66-
cyhal_gpio_direction(obj->pin, CYHAL_GPIO_DIR_INPUT);
67-
gpio_mode(obj, CYHAL_GPIO_DRIVE_ANALOG);
76+
obj->direction = CYHAL_GPIO_DIR_INPUT;
77+
if (obj->drive_mode == CYHAL_GPIO_DRIVE_STRONG) {
78+
obj->drive_mode = CYHAL_GPIO_DRIVE_NONE;
79+
}
6880
} else if (direction == PIN_OUTPUT) {
6981
// mbed reads from input buffer instead of DR even for output pins so always leave input buffer enabled
70-
cyhal_gpio_direction(obj->pin, CYHAL_GPIO_DIR_BIDIRECTIONAL);
71-
gpio_mode(obj, CYHAL_GPIO_DRIVE_STRONG);
82+
obj->direction = CYHAL_GPIO_DIR_BIDIRECTIONAL;
83+
if (obj->drive_mode == CYHAL_GPIO_DRIVE_NONE || obj->drive_mode == CYHAL_GPIO_DRIVE_ANALOG) {
84+
obj->drive_mode = CYHAL_GPIO_DRIVE_STRONG;
85+
}
7286
}
87+
apply_config(obj);
7388
}
7489

7590
#ifdef __cplusplus

targets/TARGET_Cypress/TARGET_PSOC6/cy_gpio_irq_api.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ extern "C" {
3434
void cy_gpio_irq_handler_impl(void *handler_arg, cyhal_gpio_irq_event_t event)
3535
{
3636
gpio_irq_t *obj = (gpio_irq_t *)handler_arg;
37-
cyhal_gpio_irq_event_t masked = event & obj->mask;
37+
cyhal_gpio_irq_event_t masked = (cyhal_gpio_irq_event_t)(event & obj->mask);
3838
void (*handler)(uint32_t, int) = (void (*)(uint32_t, int))obj->handler;
3939
if (NULL != handler && CYHAL_GPIO_IRQ_NONE != masked) {
4040
if (CYHAL_GPIO_IRQ_NONE != (masked & CYHAL_GPIO_IRQ_RISE)) {
@@ -80,7 +80,7 @@ void gpio_irq_set(gpio_irq_t *obj, gpio_irq_event event, uint32_t enable)
8080
} else {
8181
bits = CYHAL_GPIO_IRQ_NONE;
8282
}
83-
obj->mask = enable ? (obj->mask | bits) : (obj->mask & ~bits);
83+
obj->mask = (cyhal_gpio_irq_event_t)(enable ? (obj->mask | bits) : (obj->mask & ~bits));
8484
cyhal_gpio_irq_enable(obj->pin, obj->mask, true);
8585
}
8686

targets/TARGET_Cypress/TARGET_PSOC6/cy_i2c_api.c

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -45,18 +45,18 @@ static inline struct i2c_s *cy_get_i2c(i2c_t *obj)
4545
extern "C" {
4646
#endif
4747

48-
static uint32_t cy_i2c_convert_event(i2c_t *obj, cyhal_i2c_irq_event_t event)
48+
static uint32_t cy_i2c_convert_event(i2c_t *obj, cyhal_i2c_event_t event)
4949
{
50-
if (CYHAL_I2C_IRQ_NONE != (event & (CYHAL_I2C_SLAVE_ERR_EVENT | CYHAL_I2C_MASTER_ERR_EVENT))) {
50+
if (CYHAL_I2C_EVENT_NONE != (event & (CYHAL_I2C_SLAVE_ERR_EVENT | CYHAL_I2C_MASTER_ERR_EVENT))) {
5151
event |= I2C_EVENT_ERROR;
5252
}
53-
if (CYHAL_I2C_IRQ_NONE != (event & (CYHAL_I2C_SLAVE_RD_CMPLT_EVENT | CYHAL_I2C_SLAVE_WR_CMPLT_EVENT | CYHAL_I2C_MASTER_RD_CMPLT_EVENT | CYHAL_I2C_MASTER_WR_CMPLT_EVENT)) && !i2c_active(obj)) {
53+
if (CYHAL_I2C_EVENT_NONE != (event & (CYHAL_I2C_SLAVE_RD_CMPLT_EVENT | CYHAL_I2C_SLAVE_WR_CMPLT_EVENT | CYHAL_I2C_MASTER_RD_CMPLT_EVENT | CYHAL_I2C_MASTER_WR_CMPLT_EVENT)) && !i2c_active(obj)) {
5454
event |= I2C_EVENT_TRANSFER_COMPLETE;
5555
}
5656
return event;
5757
}
5858

59-
static void cy_i2c_event_handler(void *handler_arg, cyhal_i2c_irq_event_t event)
59+
static void cy_i2c_event_handler(void *handler_arg, cyhal_i2c_event_t event)
6060
{
6161
struct i2c_s *i2c = cy_get_i2c((i2c_t *)handler_arg);
6262
switch (event) {
@@ -91,7 +91,6 @@ void i2c_init(i2c_t *obj, PinName sda, PinName scl)
9191
// MBED I2C driver currently does not support free, so we will allow I2C to be reallocated.
9292
// TODO: once the the I2C driver properly supports free, this need to be fixed so that clocks and pins are no longer leaked.
9393
cyhal_hwmgr_free(&(i2c->hal_i2c.resource));
94-
cyhal_hwmgr_set_unconfigured(i2c->hal_i2c.resource.type, i2c->hal_i2c.resource.block_num, i2c->hal_i2c.resource.channel_num);
9594
cyhal_resource_inst_t pin_rsc = cyhal_utils_get_gpio_resource(sda);
9695
cyhal_hwmgr_free(&pin_rsc);
9796
pin_rsc = cyhal_utils_get_gpio_resource(scl);
@@ -105,23 +104,23 @@ void i2c_init(i2c_t *obj, PinName sda, PinName scl)
105104
i2c->cfg.address = 0;
106105
i2c->cfg.frequencyhal_hz = 400000;
107106
i2c->async_handler = NULL;
108-
cyhal_i2c_register_irq(&(i2c->hal_i2c), &cy_i2c_event_handler, obj);
109-
cyhal_i2c_irq_enable(&(i2c->hal_i2c), (cyhal_i2c_irq_event_t)(CYHAL_I2C_SLAVE_READ_EVENT | CYHAL_I2C_SLAVE_WRITE_EVENT | CYHAL_I2C_SLAVE_ERR_EVENT | CYHAL_I2C_SLAVE_RD_CMPLT_EVENT | CYHAL_I2C_SLAVE_WR_CMPLT_EVENT | CYHAL_I2C_MASTER_ERR_EVENT | CYHAL_I2C_MASTER_RD_CMPLT_EVENT | CYHAL_I2C_MASTER_WR_CMPLT_EVENT), true);
107+
cyhal_i2c_register_callback(&(i2c->hal_i2c), &cy_i2c_event_handler, obj);
108+
cyhal_i2c_enable_event(&(i2c->hal_i2c), (cyhal_i2c_event_t)(CYHAL_I2C_SLAVE_READ_EVENT | CYHAL_I2C_SLAVE_WRITE_EVENT | CYHAL_I2C_SLAVE_ERR_EVENT | CYHAL_I2C_SLAVE_RD_CMPLT_EVENT | CYHAL_I2C_SLAVE_WR_CMPLT_EVENT | CYHAL_I2C_MASTER_ERR_EVENT | CYHAL_I2C_MASTER_RD_CMPLT_EVENT | CYHAL_I2C_MASTER_WR_CMPLT_EVENT), CYHAL_ISR_PRIORITY_DEFAULT, true);
110109
}
111110

112111
void i2c_frequency(i2c_t *obj, int hz)
113112
{
114113
struct i2c_s *i2c = cy_get_i2c(obj);
115114
i2c->cfg.frequencyhal_hz = (uint32_t)hz;
116-
if (CY_RSLT_SUCCESS != cyhal_i2c_set_config(&(i2c->hal_i2c), &(i2c->cfg))) {
117-
MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_DRIVER_I2C, MBED_ERROR_CODE_FAILED_OPERATION), "cyhal_i2c_set_config");
115+
if (CY_RSLT_SUCCESS != cyhal_i2c_configure(&(i2c->hal_i2c), &(i2c->cfg))) {
116+
MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_DRIVER_I2C, MBED_ERROR_CODE_FAILED_OPERATION), "cyhal_i2c_configure");
118117
}
119118
}
120119

121120
int i2c_start(i2c_t *obj)
122121
{
123-
// Not supported; start/stop is generated by i2c_read/i2c_write
124-
return -1;
122+
// Nothing to do; start/stop is generated by i2c_read/i2c_write
123+
return 0;
125124
}
126125

127126
int i2c_stop(i2c_t *obj)
@@ -136,7 +135,7 @@ int i2c_stop(i2c_t *obj)
136135
int i2c_read(i2c_t *obj, int address, char *data, int length, int stop)
137136
{
138137
struct i2c_s *i2c = cy_get_i2c(obj);
139-
if (CY_RSLT_SUCCESS != cyhal_i2c_master_read(&(i2c->hal_i2c), address >> 1, (uint8_t *)data, (uint16_t)length, CY_I2C_DEFAULT_TIMEOUT)) {
138+
if (CY_RSLT_SUCCESS != cyhal_i2c_master_read(&(i2c->hal_i2c), address >> 1, (uint8_t *)data, (uint16_t)length, CY_I2C_DEFAULT_TIMEOUT, (bool)stop)) {
140139
return (int)I2C_ERROR_NO_SLAVE;
141140
}
142141
return length;
@@ -145,7 +144,7 @@ int i2c_read(i2c_t *obj, int address, char *data, int length, int stop)
145144
int i2c_write(i2c_t *obj, int address, const char *data, int length, int stop)
146145
{
147146
struct i2c_s *i2c = cy_get_i2c(obj);
148-
if (CY_RSLT_SUCCESS != cyhal_i2c_master_write(&(i2c->hal_i2c), address >> 1, (const uint8_t *)data, (uint16_t)length, CY_I2C_DEFAULT_TIMEOUT)) {
147+
if (CY_RSLT_SUCCESS != cyhal_i2c_master_write(&(i2c->hal_i2c), address >> 1, (const uint8_t *)data, (uint16_t)length, CY_I2C_DEFAULT_TIMEOUT, (bool)stop)) {
149148
return (int)I2C_ERROR_NO_SLAVE;
150149
}
151150
// NOTE: HAL does not report how many bytes were actually sent in case of early NAK
@@ -210,8 +209,8 @@ void i2c_slave_mode(i2c_t *obj, int enable_slave)
210209
{
211210
struct i2c_s *i2c = cy_get_i2c(obj);
212211
i2c->cfg.is_slave = (0 != enable_slave);
213-
if (CY_RSLT_SUCCESS != cyhal_i2c_set_config(&(i2c->hal_i2c), &(i2c->cfg))) {
214-
MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_DRIVER_I2C, MBED_ERROR_CODE_FAILED_OPERATION), "cyhal_i2c_set_config");
212+
if (CY_RSLT_SUCCESS != cyhal_i2c_configure(&(i2c->hal_i2c), &(i2c->cfg))) {
213+
MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_DRIVER_I2C, MBED_ERROR_CODE_FAILED_OPERATION), "cyhal_i2c_configure");
215214
}
216215
}
217216

@@ -242,8 +241,8 @@ void i2c_slave_address(i2c_t *obj, int idx, uint32_t address, uint32_t mask)
242241
{
243242
struct i2c_s *i2c = cy_get_i2c(obj);
244243
i2c->cfg.address = address;
245-
if (CY_RSLT_SUCCESS != cyhal_i2c_set_config(&(i2c->hal_i2c), &(i2c->cfg))) {
246-
MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_DRIVER_I2C, MBED_ERROR_CODE_FAILED_OPERATION), "cyhal_i2c_set_config");
244+
if (CY_RSLT_SUCCESS != cyhal_i2c_configure(&(i2c->hal_i2c), &(i2c->cfg))) {
245+
MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_DRIVER_I2C, MBED_ERROR_CODE_FAILED_OPERATION), "cyhal_i2c_configure");
247246
}
248247
Cy_SCB_I2C_SlaveSetAddressMask(i2c->hal_i2c.base, (uint8_t)mask);
249248
}

targets/TARGET_Cypress/TARGET_PSOC6/cy_lp_ticker_api.c

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ extern "C" {
3131
static cyhal_lptimer_t cy_lptimer0;
3232
static bool cy_lptimer_initialized = false;
3333

34-
static void cy_lp_ticker_handler(MBED_UNUSED void *unused1, MBED_UNUSED cyhal_lptimer_irq_event_t unused2)
34+
static void cy_lp_ticker_handler(MBED_UNUSED void *unused1, MBED_UNUSED cyhal_lptimer_event_t unused2)
3535
{
3636
lp_ticker_irq_handler();
3737
}
@@ -46,7 +46,7 @@ void lp_ticker_init(void)
4646
cy_lptimer_initialized = true;
4747
}
4848
lp_ticker_disable_interrupt();
49-
cyhal_lptimer_register_irq(&cy_lptimer0, &cy_lp_ticker_handler, NULL);
49+
cyhal_lptimer_register_callback(&cy_lptimer0, &cy_lp_ticker_handler, NULL);
5050
}
5151

5252
void lp_ticker_free(void)
@@ -62,15 +62,17 @@ uint32_t lp_ticker_read(void)
6262

6363
void lp_ticker_set_interrupt(timestamp_t timestamp)
6464
{
65-
if (CY_RSLT_SUCCESS != cyhal_lptimer_set_match(&cy_lptimer0, timestamp)) {
65+
uint32_t delay;
66+
delay = (uint32_t)timestamp - cyhal_lptimer_read(&cy_lptimer0);
67+
68+
if (CY_RSLT_SUCCESS != cyhal_lptimer_set_match(&cy_lptimer0, delay)) {
6669
MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_DRIVER, MBED_ERROR_CODE_FAILED_OPERATION), "cyhal_lptimer_set_time");
6770
}
68-
cyhal_lptimer_irq_enable(&cy_lptimer0, CYHAL_LPTIMER_COMPARE_MATCH, true);
6971
}
7072

7173
void lp_ticker_disable_interrupt(void)
7274
{
73-
cyhal_lptimer_irq_enable(&cy_lptimer0, CYHAL_LPTIMER_COMPARE_MATCH, false);
75+
cyhal_lptimer_enable_event(&cy_lptimer0, CYHAL_LPTIMER_COMPARE_MATCH, CYHAL_ISR_PRIORITY_DEFAULT, false);
7476
}
7577

7678
void lp_ticker_clear_interrupt(void)
@@ -87,7 +89,7 @@ const ticker_info_t *lp_ticker_get_info(void)
8789
{
8890
static const ticker_info_t info = {
8991
/* .frequency = */ CY_CFG_SYSCLK_CLKLF_FREQ_HZ,
90-
/* .bits = */ 16
92+
/* .bits = */ 32
9193
};
9294
return &info;
9395
}

targets/TARGET_Cypress/TARGET_PSOC6/cy_pwmout_api.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ void pwmout_free(pwmout_t *obj)
4545
void pwmout_write(pwmout_t *obj, float percent)
4646
{
4747
MBED_ASSERT(percent >= 0.0f && percent <= 1.0f);
48-
pwmout_pulsewidth_us(obj, percent * obj->period_us);
48+
pwmout_pulsewidth_us(obj, (int)(percent * obj->period_us));
4949
}
5050

5151
float pwmout_read(pwmout_t *obj)
@@ -66,8 +66,8 @@ void pwmout_period_ms(pwmout_t *obj, int ms)
6666
void pwmout_period_us(pwmout_t *obj, int us)
6767
{
6868
obj->period_us = (uint32_t)us;
69-
if (CY_RSLT_SUCCESS != cyhal_pwm_period(&(obj->hal_pwm), obj->period_us, obj->width_us)) {
70-
MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_DRIVER_PWM, MBED_ERROR_CODE_FAILED_OPERATION), "cyhal_pwm_period");
69+
if (CY_RSLT_SUCCESS != cyhal_pwm_set_period(&(obj->hal_pwm), obj->period_us, obj->width_us)) {
70+
MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_DRIVER_PWM, MBED_ERROR_CODE_FAILED_OPERATION), "cyhal_pwm_set_period");
7171
}
7272
if (CY_RSLT_SUCCESS != cyhal_pwm_start(&(obj->hal_pwm))) {
7373
MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_DRIVER_PWM, MBED_ERROR_CODE_FAILED_OPERATION), "cyhal_pwm_start");
@@ -87,8 +87,8 @@ void pwmout_pulsewidth_ms(pwmout_t *obj, int ms)
8787
void pwmout_pulsewidth_us(pwmout_t *obj, int us)
8888
{
8989
obj->width_us = (uint32_t)us;
90-
if (CY_RSLT_SUCCESS != cyhal_pwm_period(&(obj->hal_pwm), obj->period_us, obj->width_us)) {
91-
MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_DRIVER_PWM, MBED_ERROR_CODE_FAILED_OPERATION), "cyhal_pwm_period");
90+
if (CY_RSLT_SUCCESS != cyhal_pwm_set_period(&(obj->hal_pwm), obj->period_us, obj->width_us)) {
91+
MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_DRIVER_PWM, MBED_ERROR_CODE_FAILED_OPERATION), "cyhal_pwm_set_period");
9292
}
9393
}
9494

0 commit comments

Comments
 (0)