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>
|
||||
|
||||
* mcu/sys-stm32l4.c: New.
|
||||
|
||||
@@ -156,20 +156,35 @@ static const struct brr_setting brr_table[] = {
|
||||
{ B230400, ( 9 << 4)|12},
|
||||
{ B460800, ( 4 << 4)|14},
|
||||
{ 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
|
||||
usart_config_brr (uint8_t dev_no, uint16_t brr_value)
|
||||
int
|
||||
usart_config_baud (uint8_t dev_no, uint8_t baud_spec)
|
||||
{
|
||||
struct USART *USARTx = get_usart_dev (dev_no);
|
||||
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);
|
||||
USARTx->CR1 &= ~(USART_CR1_TE | USART_CR1_RE);
|
||||
USARTx->BRR = brr_value;
|
||||
USARTx->BRR = brr_table[i].brr_value;
|
||||
USARTx->CR1 |= save_bits;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
@@ -11,7 +11,13 @@
|
||||
#define B230400 26
|
||||
#define B460800 27
|
||||
#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
|
||||
|
||||
/* 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);
|
||||
int usart_send_break (uint8_t dev_no);
|
||||
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);
|
||||
int usart_read_ext (uint8_t dev_no, char *buf, uint16_t buflen, uint32_t *timeout_p);
|
||||
|
||||
Reference in New Issue
Block a user