Thông báo

Collapse
No announcement yet.

khắc phục lỗi arm stm32 không sử dụng được kết nối SW

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • khắc phục lỗi arm stm32 không sử dụng được kết nối SW

    Chào mọi người
    Tôi là người mới học ARM STM32. Tôi có một cái mạch dùng STM32f100C8T6 nhưng chỉ có thể nạp bằng kết nối SW.
    Hôm trước tôi viết chương trình có đoạn
    /* GPIOB Configuration: TIM3 CH2 (PB5) */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    TIM_OC2Init(TIM3, &TIM_OCInitStructure);
    TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);

    GPIO_Init(GPIOB, &GPIO_InitStructure);
    GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE)
    Do không chú ý nên khi nạp chương trình xong muốn nạp lại thì không thể thực hiện được vì khi ấn DEBUG thì đểu hiện thông báo
    No taget connected và Error: Flash Download failed - Target DLL has been cancelled
    Tôi tìn hiểu thì lý do là tại câu lệnh: GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE)
    mạch của tôi không có kết nối JTAC nên không chuyển sang nạp với kết nối JTAC
    Xin mọi người cách khắc phục.
    Xin cảm ơn

  • #2
    Nguyên văn bởi silent_eagle Xem bài viết
    Chào mọi người
    Tôi là người mới học ARM STM32. Tôi có một cái mạch dùng STM32f100C8T6 nhưng chỉ có thể nạp bằng kết nối SW.
    Hôm trước tôi viết chương trình có đoạn
    /* GPIOB Configuration: TIM3 CH2 (PB5) */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    TIM_OC2Init(TIM3, &TIM_OCInitStructure);
    TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);

    GPIO_Init(GPIOB, &GPIO_InitStructure);
    GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE)
    Do không chú ý nên khi nạp chương trình xong muốn nạp lại thì không thể thực hiện được vì khi ấn DEBUG thì đểu hiện thông báo
    No taget connected và Error: Flash Download failed - Target DLL has been cancelled
    Tôi tìn hiểu thì lý do là tại câu lệnh: GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE)
    mạch của tôi không có kết nối JTAC nên không chuyển sang nạp với kết nối JTAC
    Xin mọi người cách khắc phục.
    Xin cảm ơn

    Ngoài cách nạp bằng JTAG, SWD thì STM32 cũng có thể nạp được bằng bootloader qua UART . SET chân BOOT0, BOOT1 tương ứng rồi dùng Flash loader nạp qua UART .
    Flashing programs to STM32. Embedded Bootloader - Do It Easy With ScienceProg

    Chi tiết cách nạp qua bootloader cũng có thể tìm hiểu thêm trên google.
    Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

    Comment


    • #3
      chào mọi người.
      Vấn đề của tôi là chỉ có mạch nạp St-link và chỉ có thể nạp với SW, nó không hề có nút reset( chân này được nối với mức cao )hay nut chuyển đổi chế độ ở Boot0 và Boot1 (như trên các mạch học tập thường bán trên mạng, các chân này đêu được nối đất hết)
      sau khi tìm hiểu trên mạng và đựoc sự chỉ bảo của các anh đi trước tôi đã tìm được các cách như sau:
      vấn đề của tôi là dùng câu lệnh:
      GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);
      Như vậy chíp bị khóa chế độ debug, nên không nạp bằng mạch stlink được nửa. Tôi tự nạp đọan code disable chức năng debug rồi.
      2 cách đầu tôi tìm ở trên diễn trang: Lỗi No target connected st-link
      1. Đưa MCU về chế độ bootloader và dùng UART để xóa đọan chương trình đó là ok. ( như các bạn ở trên)
      Cách này bạn chịu khó search trên diển đàn.
      2. Cách này dể hơn: Dùng STM32 ST-Link Utility + BOOT0 con MCU keo lên nguồn
      Nếu BOOT0 hàn xuống GND thì cắt nó. Hàn nó lên 3.3V (VCC của MCU)
      Nếu BOOT0 hàn điện trở kéo xuống GND. Chỉ cần hàn chân Boot0 lên VCC là ok.
      Tắt nguồn mở lại dùng STM32 ST-Link Utility để xóa MCU
      Cách này giải thích như sau: Khi MCU khởi động gặp chân BOOT0=VCC -> nó nhảy vào trương trình bootloader của ST, nên không chạy chương trình của bạn (chương trình mà nó disable JTAG đi). Nên bạn có thể dủng stlink xóa chương trình đi.
      Nhưng vấn đề là phải cắt chân ra rồi hàn lại,
      Cách thư 3 được ông anh giúp như sau
      - Kết nối mạch với máy tính qua mạch nạp st-link, mở sẵn chương trình STM32 ST-LINK Utility
      - Nối chân reset với đất ( tôi dùng một cái dây câu chân đấy với đất có nút reset thì ấn nút, nhưng đừng bỏ ra) lúc này khi chân reset ở mức thấp thì các chân của chip sẽ trở về mặc định ban đầu
      - Kết nối mạch với chương trình nạp ( chỗ connect ấy, hay vào taget rồi chỉ vào connect). Khi kết nối được thì bạn cho chân reset lên mức cao ( tôi bỏ cái dây đồng ra thôi,nếu là nút reset thì bỏ ra)
      - Rồi dùng chương trình xóa chương trình cũ đi( vào taget chọn erase chip). Thế là ngon rồi
      Cảm ơn đã quan tâm

      Comment


      • #4
        rất mong được học hỏi
        Last edited by silent_eagle; 21-07-2014, 21:14.

        Comment


        • #5
          Dùng cách nhấn nút reset thì dễ dàng nhất!

          Comment


          • #6
            Tác động các MODE, reset và xóa_thế là xong.


            Add: 97 Quán Nam - Lê Chân - Hải Phòng.
            Tel: 031 518648 Phone: 0904 283 505

            Comment


            • #7
              cách thứ 3 hay quá. thanx bác, lưu lại để khi nào cần thì có cái dùng.

              Comment


              • #8
                các bác ai biết lỗi gì ko ạ? sau khi tải nó hiện thế nàym

                Comment


                • #9
                  ấn ok xong thì nó hiện vầy, có cao thủ nào chỉ dẫn với

                  Comment

                  Về tác giả

                  Collapse

                  silent_eagle Tìm hiểu thêm về silent_eagle

                  Bài viết mới nhất

                  Collapse

                  Đang tải...
                  X