首页 > 评测 > 【AutoChips 7801x MCU评测报告】+串口nr_micro_shell移植测试

【AutoChips 7801x MCU评测报告】+串口nr_micro_shell移植测试

  
  • 作者:WoodData
  • 来源:21ic BBS
  • [导读]
  • 移植了一个串口shell程序nr_micro_shell。顺便测试了I2C接口的读写AT24Cxx。移植很简单,主要在nr_micro_shell_config.h文件内配置,以及串口发送接收函数。主函数main内初始化

      移植了一个串口shell程序nr_micro_shell。顺便测试了I2C接口的读写AT24Cxx。移植很简单,主要在nr_micro_shell_config.h文件内配置,以及串口发送接收函数。主函数main内初始化和接收串口数据处理。



代码如下:

 

  1.  
  2. /*************<include>****************/
  3. #include "string.h"
  4.  
  5. #include "ac780x.h"
  6. #include "system_ac780x.h"
  7. #include "ac780x_gpio.h"
  8. #include "ac780x_uart.h"
  9.  
  10. #include "elog.h"
  11. #include "nr_micro_shell.h"
  12.  
  13. #include "i2c.h"
  14.  
  15.  
  16. /*************<macro>******************/
  17. #define LED2_PORT                        (GPIOC)
  18. #define LED2_PIN                        (GPIO_PIN9)
  19.  
  20. #define LED3_PORT                        (GPIOC)
  21. #define LED3_PIN                        (GPIO_PIN7)
  22.        
  23. #define LED2_ON()                                do{GPIO_SetPinLevel(LED2_PORT, LED2_PIN, GPIO_LEVEL_HIGH);}while(0)
  24. #define LED2_OFF()                                do{GPIO_SetPinLevel(LED2_PORT, LED2_PIN, GPIO_LEVEL_LOW);}while(0)
  25. #define LED2_TOGGLE()                        do{if(GPIO_GetPinLevel(LED2_PORT, LED2_PIN)){LED2_OFF;}else{LED2_ON;}}while(0)
  26.  
  27. #define LED3_ON()                                do{GPIO_SetPinLevel(LED3_PORT, LED3_PIN, GPIO_LEVEL_HIGH);}while(0)
  28. #define LED3_OFF()                                do{GPIO_SetPinLevel(LED3_PORT, LED3_PIN, GPIO_LEVEL_LOW);}while(0)
  29. #define LED3_TOGGLE()                        do{if(GPIO_GetPinLevel(LED3_PORT, LED3_PIN)){LED3_OFF;}else{LED3_ON;}}while(0)
  30.  
  31.  
  32. /*************<enum>*******************/
  33.  
  34.  
  35. /*************<union>******************/
  36.  
  37.  
  38. /*************<struct>*****************/
  39.  
  40.  
  41. /*************<variable>***************/
  42.  
  43.  
  44. /*************<prototype>**************/
  45. void shell_ls_cmd(char argc, char *argv)
  46. {
  47.                 unsigned int i = 0;
  48.         if (argc > 1)
  49.         {
  50.                 if (!strcmp("cmd", &argv[argv[1]]))
  51.                 {
  52.  
  53.                         for (i = 0; nr_shell.static_cmd[i].fp != NULL; i++)
  54.                         {
  55.                                 shell_printf(nr_shell.static_cmd[i].cmd);
  56.                                 shell_printf("\r\n");
  57.                         }
  58.                 }
  59.                 else if (!strcmp("-v", &argv[argv[1]]))
  60.                 {
  61.                         shell_printf("ls version 1.0.\r\n");
  62.                 }
  63.                 else if (!strcmp("-h", &argv[argv[1]]))
  64.                 {
  65.                         shell_printf("useage: ls [options]\r\n");
  66.                         shell_printf("options: \r\n");
  67.                         shell_printf("\t -h \t: show help\r\n");
  68.                         shell_printf("\t -v \t: show version\r\n");
  69.                         shell_printf("\t cmd \t: show all commands\r\n");
  70.                 }
  71.         }
  72.         else
  73.         {
  74.                 shell_printf("ls need more arguments!\r\n");
  75.         }
  76. }
  77.  
  78. /**
  79. * [url=home.php?mod=space&uid=247401]@brief[/url] test command
  80. */
  81. void shell_test_cmd(char argc, char *argv)
  82. {
  83.         unsigned int i;
  84.         shell_printf("test command:\r\n");
  85.         for (i = 0; i < argc; i++)
  86.         {
  87.                         shell_printf("paras %d: %s\r\n", i, &(argv[argv[i]]));
  88.         }
  89. }
  90.  
  91. /**
  92. * [url=home.php?mod=space&uid=247401]@brief[/url] test command
  93. */
  94. void shell_led_cmd(char argc, char *argv)
  95. {
  96.         if (argc > 1)
  97.         {        
  98.                 if (!strcmp("on", &argv[argv[1]]))
  99.                 {
  100.                         if (!strcmp("1", &argv[argv[2]]))
  101.                         {
  102.                                 LED2_ON();
  103.                         }else if (!strcmp("2", &argv[argv[2]]))
  104.                         {
  105.                                 LED3_ON();
  106.                         }else
  107.                         {
  108.                                 shell_printf("useage: led [on/off] [1/2/3/4]\r\n");        
  109.                         }
  110.                 }else if (!strcmp("off", &argv[argv[1]]))
  111.                 {
  112.                         if (!strcmp("1", &argv[argv[2]]))
  113.                         {
  114.                                 LED2_OFF();
  115.                         }else if (!strcmp("2", &argv[argv[2]]))
  116.                         {
  117.                                 LED3_OFF();
  118.                         }else
  119.                         {
  120.                                 shell_printf("useage: led [on/off] [1/2/3/4]\r\n");        
  121.                         }
  122.                         
  123.                 }else{
  124.                         shell_printf("useage: led [on/off] [1/2/3/4]\r\n");               
  125.                 }
  126.         }
  127. }
  128.  
  129. void at24cxx_cmd(char argc, char *argv)
  130. {
  131.         if (argc > 1)
  132.         {        
  133.                 if (!strcmp("read", &argv[argv[1]]))
  134.                 {
  135.                                         I2C_RdDataFromAT24C();
  136.                 }else if (!strcmp("write", &argv[argv[1]]))
  137.                 {
  138.                     I2C_WrDataToAT24C();                        
  139.                 }else{
  140.                     shell_printf("useage: at24 [read/write] \r\n");               
  141.                 }
  142.         }else{
  143.                         shell_printf("useage: at24 [read/write] \r\n");
  144.                 }
  145. }
  146. NR_SHELL_CMD_EXPORT(at24, at24cxx_cmd);
  147.  
  148.  
  149. #ifdef NR_SHELL_USING_EXPORT_CMD
  150. NR_SHELL_CMD_EXPORT(ls, shell_ls_cmd);
  151. NR_SHELL_CMD_EXPORT(test, shell_test_cmd);
  152. NR_SHELL_CMD_EXPORT(led, shell_led_cmd);
  153.  
  154. #else
  155. const static_cmd_st static_cmd[] =
  156.         {
  157.                 {"ls", shell_ls_cmd},
  158.                 {"test", shell_test_cmd},
  159.                 {"led", shell_led_cmd},
  160.                
  161.                 {"\0", NULL}
  162.         };         
  163. #endif
  164.  
  165. /**
  166. * [url=home.php?mod=space&uid=555622]@prototype[/url] main(void)
  167. *
  168. * @param[in] void
  169. * @return         void
  170. *
  171. * @brief           main entry.
  172. *                         main.
  173. */
  174. int main(void)
  175. {
  176.         uint8_t ch;
  177.        
  178.         InitDelay();        //sysclk  Delay
  179.         InitDebug();         //Uart Debug printf
  180.        
  181.         //èLEDGPIO.
  182.         GPIO_SetDir(LED2_PORT, LED2_PIN, GPIO_OUT);
  183.         GPIO_SetDir(LED3_PORT, LED3_PIN, GPIO_OUT);
  184.        
  185.         I2C_InitHw();
  186.        
  187.        
  188.         elog_init();
  189.         shell_init();            /* nr_micro_shell*/
  190.        
  191.  
  192.         while(1)
  193.         {
  194.                 if (UART_RxIsDataReady(UART2))
  195.         {br />
  196.             ch = UART_ReceiveData(UART2);
  197.                         shell(ch);
  198.         }
  199.         
  200.         }
  201. }
  202.  
  203. /*************<end>********************/
  204.  
复制代码

I2C程序:

  1.  
  2. /* Copyright Statement:
  3. *
  4. * This software/firmware and related documentation ("AutoChips Software") are
  5. * protected under relevant copyright laws. The information contained herein is
  6. * confidential and proprietary to AutoChips Inc. and/or its licensors. Without
  7. * the prior written permission of AutoChips inc. and/or its licensors,  any
  8. * reproduction,  modification,  use or disclosure of AutoChips Software,  and
  9. * information contained herein,  in whole or in part,  shall be strictly
  10. * prohibited.
  11. *
  12. * AutoChips Inc. (C) 2018. All rights reserved.
  13. *
  14. * BY OPENING THIS FILE,  RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  15. * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("AUTOCHIPS SOFTWARE")
  16. * RECEIVED FROM AUTOCHIPS AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER
  17. * ON AN "AS-IS" BASIS ONLY. AUTOCHIPS EXPRESSLY DISCLAIMS ANY AND ALL
  18. * WARRANTIES,  EXPRESS OR IMPLIED,  INCLUDING BUT NOT LIMITED TO THE IMPLIED
  19. * WARRANTIES OF MERCHANTABILITY,  FITNESS FOR A PARTICULAR PURPOSE OR
  20. * NONINFRINGEMENT. NEITHER DOES AUTOCHIPS PROVIDE ANY WARRANTY WHATSOEVER WITH
  21. * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY,
  22. * INCORPORATED IN,  OR SUPPLIED WITH THE AUTOCHIPS SOFTWARE,  AND RECEIVER AGREES
  23. * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO.
  24. * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO
  25. * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN AUTOCHIPS
  26. * SOFTWARE. AUTOCHIPS SHALL ALSO NOT BE RESPONSIBLE FOR ANY AUTOCHIPS SOFTWARE
  27. * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
  28. * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND AUTOCHIPS'S
  29. * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE AUTOCHIPS SOFTWARE
  30. * RELEASED HEREUNDER WILL BE,  AT AUTOCHIPS'S OPTION,  TO REVISE OR REPLACE THE
  31. * AUTOCHIPS SOFTWARE AT ISSUE,  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE
  32. * CHARGE PAID BY RECEIVER TO AUTOCHIPS FOR SUCH AUTOCHIPS SOFTWARE AT ISSUE.
  33. */
  34.  
  35. /*************<start>******************/
  36.  
  37.  
  38. /*************<include>****************/
  39. #include "i2c.h"
  40.  
  41. /*************<macro>******************/
  42. #define AT24C02_DEV_ADDR                (0x50)
  43.  
  44.  
  45. /*************<enum>*******************/
  46.  
  47.  
  48. /*************<union>******************/
  49.  
  50.  
  51. /*************<struct>*****************/
  52.  
  53.  
  54. /*************<variable>***************/
  55. uint8_t g_wrAT24CDataBuf[9];
  56. uint8_t g_rdAT24CDataBuf[9];
  57.  
  58.  
  59. /*************<prototype>**************/
  60.  
  61.  
  62. /**
  63. * @prototype I2C_InitHw(void)
  64. *
  65. * @param[in] void
  66. * @return         void
  67. *
  68. * @brief           I2C.
  69. */
  70. void I2C_InitHw(void)
  71. {
  72.         I2C_ConfigType i2cConfig = {0};
  73.        
  74.         /*I2C.*/
  75.         GPIO_SetFunc(I2C0_SCL_PORT, I2C0_SCL_PIN, GPIO_FUN3);
  76.         GPIO_SetFunc(I2C0_SDA_PORT, I2C0_SDA_PIN, GPIO_FUN3);
  77.        
  78.         /*I2Cè.*/
  79.         i2cConfig.masterConfigs.ARBEn         = ENABLE;/*è÷ú.*/
  80.         i2cConfig.masterConfigs.SYNCEn        = ENABLE;/*è÷úSCL.*/
  81.         /*è¨100Kbps,bandrate = 24M / (10 * 12 * 2) = 100Kbps;*/
  82.         i2cConfig.masterConfigs.sampleCnt        = 9;
  83.         i2cConfig.masterConfigs.stepCnt                = 11;
  84.        
  85.         i2cConfig.slaveConfigs.addExtEn                = DISABLE;/*.*/
  86.         i2cConfig.slaveConfigs.addRangeEn        = DISABLE;/*§.*/
  87.         i2cConfig.slaveConfigs.monitorEn        = DISABLE;/*úà.*/
  88.         i2cConfig.slaveConfigs.stretchEn        = DISABLE;/*úSCLì.*/
  89.         i2cConfig.slaveConfigs.gcaEn                = DISABLE;/*úSCL.*/
  90.         i2cConfig.slaveConfigs.wakeupEn                = DISABLE;/*,ú±§.*/
  91.         i2cConfig.slaveConfigs.RXFInterruptEn        = DISABLE;/*ú.*/
  92.         i2cConfig.slaveConfigs.RXOFInterruptEn        = DISABLE;/*.*/
  93.         i2cConfig.slaveConfigs.TXEInterruptEn        = DISABLE;/*.*/
  94.         i2cConfig.slaveConfigs.TXUFInterruptEn        = DISABLE;/*.*/
  95.         i2cConfig.slaveConfigs.slaveAddress                = AT24C02_DEV_ADDR;/*ú.*/
  96.         i2cConfig.slaveConfigs.slave7BitRangeAddress = 0;/*ú§.*/
  97.         i2cConfig.glitchFilterCnt        = 0;/*.*/
  98.         i2cConfig.interruptEn                = DISABLE;/*I2C.*/
  99.         i2cConfig.nackInterruptEn        = DISABLE;/*NACK.*/
  100.         i2cConfig.ssInterruptEn                = DISABLE;/*×startòstop.*/
  101.         i2cConfig.dmaRxEn                        = DISABLE;/*èDMA.*/
  102.         i2cConfig.dmaTxEn                        = DISABLE;/*èDMA.*/
  103.         i2cConfig.mode                                = I2C_MASTER;/*è÷ú.*/
  104.         i2cConfig.i2cEn                &bsp;               = ENABLE;/*é.*/
  105.         i2cConfig.callBack                        = NULL;/*÷.*/
  106.         I2C_Init(I2C0, &i2cConfig);
  107. }
  108.  
  109. /**
  110. * @prototype I2C_WrDataToAT24C(void)
  111. *
  112. * @param[in] void
  113. * @return         void
  114. *
  115. * @brief           EEPROM.
  116. */
  117. void I2C_WrDataToAT24C(void)
  118. {
  119.         g_wrAT24CDataBuf[0] = 0x00;//
  120.         for (uint8_t ii = 0; ii < 8; ii++)
  121.         {
  122.                 g_wrAT24CDataBuf[ii + 1] = ii+10;
  123.                 printf("%02X ", g_wrAT24CDataBuf[ii + 1]);
  124.         }printf("\r\n");
  125.         I2C_MasterBurstWrite(I2C0, AT24C02_DEV_ADDR, g_wrAT24CDataBuf, 9, ENABLE);
  126. }
  127.  
  128. /**
  129. * @prototype I2C_RdDataFromAT24C(void)
  130. *
  131. * @param[in] void
  132. * @return         void
  133. *
  134. * @brief           EEPROM.
  135. */
  136. void I2C_RdDataFromAT24C(void)
  137. {
  138.         g_wrAT24CDataBuf[0] = 0x00;//
  139.         I2C_MasterBurstWrite(I2C0, AT24C02_DEV_ADDR, g_wrAT24CDataBuf, 1, DISABLE);
  140.         I2C_MasterBurstRead (I2C0, AT24C02_DEV_ADDR, g_rdAT24CDataBuf, 8);
  141.         for (uint8_t ii = 0; ii < 8; ii++)
  142.         {
  143.                 printf("%02X ", g_rdAT24CDataBuf[ii]);
  144.         }
  145.         printf("\r\n");
  146. }
  147.  
  148.  
  149. /*************<end>********************/
  150.  
复制代码




工程代码:

 

游客,如果您要查看本帖隐藏内容请前往:https://bbs.21ic.com/icview-2972192-1-1.html 查看


 

 

 

 

 

  • 本文系21ic原创,未经许可禁止转载!

网友评论