[活动专区] 【AT-START-F425测评】+ 驱动TN9

[复制链接]
 楼主| 比神乐 发表于 2022-3-20 11:22 | 显示全部楼层 |阅读模式
今天搞了一下TN9,无线红外模块。
ACTION接PB8,CLOCK接PB7,DATA接PB5
代码
  1. #include "at32f425_board.h"
  2. #include "at32f425_clock.h"
  3. #include "stdio.h"
  4. #include "at32f425.h"
  5. /** @addtogroup AT32F425_periph_examples
  6.   * @{
  7.   */
  8. #define uchar unsigned char  
  9. #define uint unsigned int
  10. /** @addtogroup 425_GPIO_led_toggle GPIO_led_toggle
  11.   * @{
  12.   */
  13. #define ACK_PIN                         GPIO_PINS_8
  14. #define ACK_GPIO                        GPIOB
  15. #define ACK_GPIO_CRM_CLK                CRM_GPIOB_PERIPH_CLOCK

  16. #define CLK_PIN                         GPIO_PINS_7
  17. #define CLK_GPIO                        GPIOB
  18. #define CLK_GPIO_CRM_CLK                CRM_GPIOB_PERIPH_CLOCK

  19. #define DATA_PIN                         GPIO_PINS_5
  20. #define DATA_GPIO                        GPIOB
  21. #define DATA_GPIO_CRM_CLK                CRM_GPIOB_PERIPH_CLOCK


  22. void ACK_0() { gpio_bits_reset(GPIOB,GPIO_PINS_8);}  //
  23. void ACK_1() { gpio_bits_set(GPIOB,GPIO_PINS_8);}


  24. uint16_t TN9[1]       = {ACK_PIN};
  25. crm_periph_clock_type TN9_gpio_crm_clk[1] = {ACK_GPIO_CRM_CLK};
  26. gpio_type *TN9_port[3]        = {ACK_GPIO};



  27. float Temp;
  28. float Temp1,Temp2;
  29. unsigned char ReadData[5];
  30. //float  a,b;


  31. //-----------------------------------------------------------------------------------------
  32. void Delay(unsigned char us)  //5,7,9
  33. {
  34.   while(--us);  
  35. }


  36. //-----------------------------------------------------------------------------------------
  37. void Delayms(unsigned int ims)
  38. {
  39.   unsigned int i,j;
  40.         for(i=0;i<ims;i++)
  41.                 for(j=0;j<65;j++)
  42.                 {
  43.                         Delay(1);
  44.                 }
  45. }
  46. void TN_IRACK_EN(void)
  47. {
  48.         ACK_0();
  49.   Delay(1);
  50. }


  51. void TN_IRACK_UN(void)
  52. {
  53.         ACK_1();
  54.   Delay(1);
  55. }

  56. void TN_ReadData(unsigned char Flag)
  57. {
  58.         unsigned char i,j,k,BitState=0;
  59.         for(k=0;k<7;k++)
  60.         {
  61.                 for(j=0;j<5;j++)
  62.                 {
  63.                         for(i=0;i<8;i++)
  64.                         {
  65.                                 while(1)
  66.                                 {
  67.                                         if(gpio_input_data_bit_read(CLK_GPIO,CLK_PIN)==0)
  68.                                                 break;
  69.                                         Delay(1);
  70.                                 }
  71.                                 Delay(1);
  72.                                 if(gpio_input_data_bit_read(DATA_GPIO,DATA_PIN)==1)
  73.                                         BitState=1;
  74.                                 else
  75.                                         BitState=0;
  76.                                 ReadData[j]= ReadData[j]<<1;
  77.                                 ReadData[j]= ReadData[j]|BitState;
  78.                                 Delay(1);
  79.                                 while(1)
  80.                                 {
  81.                                         if(gpio_input_data_bit_read(CLK_GPIO,CLK_PIN)==1)
  82.                                                 break;
  83.                                         Delay(1);
  84.                                 }
  85.                         }
  86.                 }
  87.                 if(ReadData[0]==Flag)
  88.                         k=8;
  89.         }
  90.         TN_IRACK_UN();
  91. }
  92. float TN_GetData(unsigned char X)
  93. {
  94.        
  95.   //InitIO();
  96.         TN_ReadData(X);
  97.         Temp=(ReadData[1]<<8)|ReadData[2];
  98.         Temp=(float)Temp/16.00-273.15;
  99.         return Temp;
  100. }
  101. float TN_GetTemp(unsigned char mode)
  102. {
  103.        
  104.         float T;
  105.        
  106.         {       
  107.                 TN_IRACK_UN();
  108.                 TN_IRACK_EN();
  109.                 if(mode==0)
  110.                 {
  111.                         T=TN_GetData(0x4c);
  112.                
  113.                 }
  114.                 else
  115.                 {
  116.                         T=TN_GetData(0x66);
  117.                        
  118.                 }
  119.         }
  120.        
  121.        
  122.         return T;
  123. }
  124. void TN9_io_init(void)
  125. {
  126.   gpio_init_type gpio_init_struct;

  127.   /* enable the led clock */
  128.   crm_periph_clock_enable(TN9_gpio_crm_clk[0],TRUE);
  129.        
  130.   /* set default parameter */
  131.   gpio_default_para_init(&gpio_init_struct);

  132.   /* configure the led gpio */
  133.   gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
  134.   gpio_init_struct.gpio_out_type  = GPIO_OUTPUT_PUSH_PULL;
  135.   gpio_init_struct.gpio_mode = GPIO_MODE_OUTPUT;
  136.   gpio_init_struct.gpio_pins = ACK_PIN;
  137.   gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
  138.   gpio_init(TN9_port[0],&gpio_init_struct);
  139.        
  140.        
  141. }

  142. void at32_input_init(void)
  143. {
  144.   gpio_init_type gpio_init_struct;

  145.   /* enable the button clock */
  146.   crm_periph_clock_enable(CLK_GPIO_CRM_CLK, TRUE);

  147.   /* set default parameter */
  148.   gpio_default_para_init(&gpio_init_struct);

  149.   /* configure button pin as input with pull-up/pull-down */
  150.   gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
  151.   gpio_init_struct.gpio_out_type  = GPIO_OUTPUT_PUSH_PULL;
  152.   gpio_init_struct.gpio_mode = GPIO_MODE_INPUT;
  153.   gpio_init_struct.gpio_pins = CLK_PIN;
  154.   gpio_init_struct.gpio_pull = GPIO_PULL_DOWN;
  155.   gpio_init(CLK_GPIO, &gpio_init_struct);
  156.        
  157.         gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
  158.   gpio_init_struct.gpio_out_type  = GPIO_OUTPUT_PUSH_PULL;
  159.   gpio_init_struct.gpio_mode = GPIO_MODE_INPUT;
  160.   gpio_init_struct.gpio_pins = DATA_PIN;
  161.   gpio_init_struct.gpio_pull = GPIO_PULL_DOWN;
  162.   gpio_init(DATA_GPIO, &gpio_init_struct);
  163. }
  164. /**
  165.   * [url=home.php?mod=space&uid=247401]@brief[/url]  main function.
  166.   * @param  none
  167.   * @retval none
  168.   */
  169. int main(void)
  170. {
  171.         long int i;
  172.   system_clock_config();

  173.   at32_board_init();
  174.         TN9_io_init();
  175.         at32_input_init();
  176.        
  177.   while(1)
  178.   {
  179.                
  180.                  
  181.                         Temp1=TN_GetTemp(0);
  182.                 Temp2=TN_GetTemp(1);
  183.                
  184.                 Delayms(500);
  185.   }
  186. }
效果图:
3.jpg 4.jpg
上面是体温,下面是环境温度。
6.jpg
andygirl 发表于 2022-4-14 10:02 | 显示全部楼层
这是个模块组件吧,
什么接口的
 楼主| 比神乐 发表于 2022-5-14 11:33 | 显示全部楼层
说不上什么接口
您需要登录后才可以回帖 登录 | 注册

本版积分规则

470

主题

3541

帖子

7

粉丝
快速回复 返回顶部 返回列表