Consolidate ssp_read and ssp_write into a single function, ssp_transfer. SSP bus transfers are bi-directional -- when bytes are written, they are also read.

This commit is contained in:
Jared Boone 2012-10-13 16:56:04 -07:00 committed by Piotr Esden-Tempski
parent 25d7853422
commit 18bcbc3d28
2 changed files with 7 additions and 23 deletions

View File

@ -194,9 +194,7 @@ void ssp_init(ssp_num_t ssp_num,
ssp_master_slave_t master_slave, ssp_master_slave_t master_slave,
ssp_slave_option_t slave_option); ssp_slave_option_t slave_option);
uint16_t ssp_read(ssp_num_t ssp_num); u16 ssp_transfer(ssp_num_t ssp_num, u16 data);
void ssp_write(ssp_num_t ssp_num, uint16_t data);
END_DECLS END_DECLS

View File

@ -89,25 +89,6 @@ void ssp_init(ssp_num_t ssp_num,
SSP_CR1(ssp_port) = (SSP_ENABLE | mode | master_slave | slave_option); SSP_CR1(ssp_port) = (SSP_ENABLE | mode | master_slave | slave_option);
} }
/*
* This Function Wait until Data RX Ready, and return Data Read from SSP.
*/
uint16_t ssp_read(ssp_num_t ssp_num)
{
uint32_t ssp_port;
if (ssp_num == SSP0_NUM) {
ssp_port = SSP0;
} else {
ssp_port = SSP1;
}
/* Wait Until Data Received (Rx FIFO not Empty) */
while ((SSP_SR(ssp_port) & SSP_SR_RNE) == 0);
return SSP_DR(ssp_port);
}
void ssp_wait_until_not_busy(ssp_num_t ssp_num) void ssp_wait_until_not_busy(ssp_num_t ssp_num)
{ {
uint32_t ssp_port; uint32_t ssp_port;
@ -122,7 +103,7 @@ void ssp_wait_until_not_busy(ssp_num_t ssp_num)
} }
/* This Function Wait Data TX Ready, and Write Data to SSP */ /* This Function Wait Data TX Ready, and Write Data to SSP */
void ssp_write(ssp_num_t ssp_num, uint16_t data) u16 ssp_transfer(ssp_num_t ssp_num, u16 data)
{ {
uint32_t ssp_port; uint32_t ssp_port;
@ -147,6 +128,11 @@ void ssp_write(ssp_num_t ssp_num, uint16_t data)
* example... * example...
*/ */
ssp_wait_until_not_busy(ssp_num); ssp_wait_until_not_busy(ssp_num);
/* Wait Until Data Received (Rx FIFO not Empty) */
while( (SSP_SR(ssp_port) & SSP_SR_RNE) == 0);
return SSP_DR(ssp_port);
} }
/**@}*/ /**@}*/