Better API for baud setting for smartcard communication.
This commit is contained in:
@@ -1,3 +1,11 @@
|
|||||||
|
2019-04-25 NIIBE Yutaka <gniibe@fsij.org>
|
||||||
|
|
||||||
|
* contrib/usart.h (BSCARD1, BSCARD2...): New.
|
||||||
|
(BSCARD): Remove.
|
||||||
|
|
||||||
|
* contrib/usart-stm32f103.c (usart_config_baud): Rename
|
||||||
|
from usart_config_brr, changing API.
|
||||||
|
|
||||||
2019-04-24 NIIBE Yutaka <gniibe@fsij.org>
|
2019-04-24 NIIBE Yutaka <gniibe@fsij.org>
|
||||||
|
|
||||||
* mcu/sys-stm32l4.c: New.
|
* mcu/sys-stm32l4.c: New.
|
||||||
|
|||||||
@@ -156,20 +156,35 @@ static const struct brr_setting brr_table[] = {
|
|||||||
{ B230400, ( 9 << 4)|12},
|
{ B230400, ( 9 << 4)|12},
|
||||||
{ B460800, ( 4 << 4)|14},
|
{ B460800, ( 4 << 4)|14},
|
||||||
{ B921600, ( 2 << 4)|7},
|
{ B921600, ( 2 << 4)|7},
|
||||||
{ BSCARD, ( 234 << 4)|6},
|
{ BSCARD1, ( 232 << 4)|8}, /* 9677 */
|
||||||
|
{ BSCARD2, ( 116 << 4)|4}, /* 19354 */
|
||||||
|
{ BSCARD4, ( 58 << 4)|2}, /* 38709 */
|
||||||
|
{ BSCARD8, ( 29 << 4)|1}, /* 77419 */
|
||||||
|
{ BSCARD12, ( 19 << 4)|6}, /* 116129 */
|
||||||
|
{ BSCARD16, ( 14 << 4)|9}, /* 154506 */
|
||||||
|
{ BSCARD20, ( 11 << 4)|10}, /* 193548 */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
void
|
int
|
||||||
usart_config_brr (uint8_t dev_no, uint16_t brr_value)
|
usart_config_baud (uint8_t dev_no, uint8_t baud_spec)
|
||||||
{
|
{
|
||||||
struct USART *USARTx = get_usart_dev (dev_no);
|
struct USART *USARTx = get_usart_dev (dev_no);
|
||||||
uint32_t save_bits;
|
uint32_t save_bits;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < NUM_BAUD; i++)
|
||||||
|
if (brr_table[i].baud_spec == baud_spec)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (i >= NUM_BAUD)
|
||||||
|
return -1;
|
||||||
|
|
||||||
save_bits = USARTx->CR1 & (USART_CR1_TE | USART_CR1_RE);
|
save_bits = USARTx->CR1 & (USART_CR1_TE | USART_CR1_RE);
|
||||||
USARTx->CR1 &= ~(USART_CR1_TE | USART_CR1_RE);
|
USARTx->CR1 &= ~(USART_CR1_TE | USART_CR1_RE);
|
||||||
USARTx->BRR = brr_value;
|
USARTx->BRR = brr_table[i].brr_value;
|
||||||
USARTx->CR1 |= save_bits;
|
USARTx->CR1 |= save_bits;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|||||||
@@ -11,7 +11,13 @@
|
|||||||
#define B230400 26
|
#define B230400 26
|
||||||
#define B460800 27
|
#define B460800 27
|
||||||
#define B921600 28
|
#define B921600 28
|
||||||
#define BSCARD 63
|
#define BSCARD1 57
|
||||||
|
#define BSCARD2 58
|
||||||
|
#define BSCARD4 59
|
||||||
|
#define BSCARD8 60
|
||||||
|
#define BSCARD12 61
|
||||||
|
#define BSCARD16 62
|
||||||
|
#define BSCARD20 63
|
||||||
#define MASK_BAUD 0x3f
|
#define MASK_BAUD 0x3f
|
||||||
|
|
||||||
/* POSIX supports 5, 6. USB suppots 16 */
|
/* POSIX supports 5, 6. USB suppots 16 */
|
||||||
@@ -73,7 +79,7 @@ int usart_write (uint8_t dev_no, char *buf, uint16_t buflen);
|
|||||||
const struct usart_stat *usart_stat (uint8_t dev_no);
|
const struct usart_stat *usart_stat (uint8_t dev_no);
|
||||||
int usart_send_break (uint8_t dev_no);
|
int usart_send_break (uint8_t dev_no);
|
||||||
void usart_config_clken (uint8_t dev_no, int on);
|
void usart_config_clken (uint8_t dev_no, int on);
|
||||||
void usart_config_brr (uint8_t dev_no, uint16_t brr_value);
|
int usart_config_baud (uint8_t dev_no, uint8_t baud_spec);
|
||||||
|
|
||||||
void usart_read_prepare_poll (uint8_t dev_no, chopstx_poll_cond_t *poll_desc);
|
void usart_read_prepare_poll (uint8_t dev_no, chopstx_poll_cond_t *poll_desc);
|
||||||
int usart_read_ext (uint8_t dev_no, char *buf, uint16_t buflen, uint32_t *timeout_p);
|
int usart_read_ext (uint8_t dev_no, char *buf, uint16_t buflen, uint32_t *timeout_p);
|
||||||
|
|||||||
Reference in New Issue
Block a user