EasyManua.ls Logo

TELINK SEMICONDUCTOR TLSR8232 - Page 185

Default Icon
211 pages
Print Icon
To Next Page IconTo Next Page
To Next Page IconTo Next Page
To Previous Page IconTo Previous Page
To Previous Page IconTo Previous Page
Loading...
Telink TLSR8232 BLE SDK Developer Handbook
AN-19112700-E1 184 Ver.1.0.0
data
FifoTask_data
FifoTask_idle_repeat*n
FifoTask_repeat*n
repeat
IR dma fifo done
interrupt
IR dma fifo done
interrupt
IR dma fifo done
interrupt
IR start
110 mS * n 110 mS * n
repeat
repeat
repeat
repeat
110mS
……
1
n
……
1
n
2,3...
2,3...
……
……
Figure 10-6 IR Timing 2
As per the IR timing design above, corresponding code in SW flow is shown as below:
At IR start, invoke the function “ir_nec_send”, enable FifoTask_data, and use interrupt to
control the following flow. In the interrupt when FifoTask_data is finished, enable
FifoTask_idle. In the interrupt when FifoTask_idle is finished, enable FifoTask_repeat.
Before manually stopping IR DMA FIFO mode, FifoTask_repeat is executed continually.
void ir_nec_send(u8 addr1, u8 addr2, u8 cmd)
{
//Add FifoTask_data to Dma
ir_send_ctrl.is_sending = IR_SENDING_DATA;
ir_send_ctrl.sending_start_time = clock_time();
pwm_start_dma_ir_sending();
}
void rc_ir_irq_prc(void)
{
if(reg_pwm_irq_sta & FLD_IRQ_PWM0_IR_DMA_FIFO_DONE)
{
reg_pwm_irq_sta = FLD_IRQ_PWM0_IR_DMA_FIFO_DONE;
if(ir_send_ctrl.repeat_enable){
if(ir_send_ctrl.is_sending == IR_SENDING_DATA){
ir_send_ctrl.is_sending = IR_SENDING_REPEAT;
//Add FifoTask_idle_repeat*n to Dma
pwm_start_dma_ir_sending();
}

Table of Contents