1) Создание нового проекта.
1.1) В Code Composer Studio создать новый проект Lab9.pjt. Открыть файл Lab9.c и сохранить его в E:\C281x\Labs\Lab9\lab9.c.
1.2) Добавить в проект файлы:
C:\tidcs\c28\dsp281x\v100\DSP281x_headers\source\DSP281x_GlobalVariableDefs.c
C:\tidcs\c28\dsp281x\v100\DSP281x_common\source\DSP281x_PieCtrl.c
C:\tidcs\c28\dsp281x\v100\DSP281x_common\source\ DSP281x_PieVect.c
C:\tidcs\c28\dsp281x\v100\DSP281x_common\source\DSP281x_DefaultIsr.c
C:\tidcs\c28\dsp281x\v100\DSP281x_common\source\DSP281x_CpuTimers.c
C:\tidcs\c28\dsp281x\v100\DSP281x_headers\cmd\F2812_Headers_nonBIOS.cmd
C:\tidcs\c28\dsp281x\v100\DSP281x_common\cmd\F2812_EzDSP_RAM_lnk.cmd
C:\ti\c2000\cgtoolslib\ rts2800_ml.lib
2) Настройка параметров проекта, компоновка проекта и загрузка выходного файла.
2.1) Включить в проект заголовочные файлы: Project → Build Options, в закладке Compiler выбрать Preprocessor и в поле Include Search Path (-i) ввести:
C:\tidcs\C28\dsp281x\v100\DSP281x_headers\include;..\include
2.2) Задать глубину стека: Project → Build Options → Linker → Stack Size: 0x400.
2.3) Закрыть Build Options, кликнув OK.
3) Преобразование файла Lab9.c.
3.1) Настроить в основной программе цикл while() таким образом, чтобы каждая отправка осуществлялась через 1 секунду. Сделать прерывание «CPU core timer 0» через каждые 50 мс для увеличения значения “CpuTimer0.InterruptCount”.
3.2) Создать новую структуру в основной программе “ECanaShadow”:
struct ECAN_REGS ECanaShadow;
3.3) В подпрограмме «Gpio_select()» настроить периферийные функции CANTxA и CANRxA для работы с CAN-модулем:
GpioMuxRegs.GPFMUX.bit.CANTXA_GPIOF6 = 1;
GpioMuxRegs.GPFMUX.bit.CANRXA_GPIOF7 = 1;
3.4) В конце кода программы создать подпрограмму InitCan(), с помощью которой осуществить следующие шаги:
3.4.1) В регистрах “ECanaRegs.CANTIOC” и “ECanaRegs.CANRIOC” установить биты “TXFUNC” и “RXFUNC”.
3.4.2) Включить режим HECC модуля CAN (регистр “ECanaRegs.CANMC”).
3.4.3) Для получения доступа к регистрам времени установить бит “CCR” регистра “ECanaRegs.CANMC”.
3.4.4) Для передачи запроса инициализации CAN установить флаг “CCE” регистра “ECanaRegs.CANES”.
3.4.5) Установить параметры “BRP”, “TSEG1” и “TSEG2” регистра “ECanaRegs.CANBTC” таким образом, чтобы скорость передачи была 100 кбит/с.
3.4.6) После установки параметров регистра “ECanaRegs.CANBTC” запретить к нему доступ - очистить бит CCR регистра “ECanaRegs.CANMC”.
3.4.7) Отключить все mailboxes, кроме того, который отправляет сообщение, установкой в 0 полей регистра “ECanaRegs.CANME”.
3.5) Для подготовки mailbox#5 к отправке сообщения сделать следующее:
3.5.1) Установить идентификатор сообщения 0x10000000 (бит “IDE” регистра “EcanaMboxes.MBOX5.MSGID”). Также установить бит IDE регистра “EcanaMboxes.MBOX1.MSGID” в 1.
3.5.2) Для установления mailbox#5 передающим, сбросить бит “MD5” регистра “ECanaRegs.CANMD”. Так как мы не имеем доступа к регистру “ECanaRegs.CANMD”, то сделать это следующим образом:
ECanaShadow.CANMD.all = ECanaRegs.CANMD.all;
ECanaShadow.CANMD.bit.MD5 = 0;
ECanaRegs.CANMD.all = ECanaShadow.CANMD.all;
Активировать mailbox#5:
ECanaShadow.CANME.all = ECanaRegs.CANME.all;
ECanaShadow.CANME.bit.ME5 = 1;
ECanaRegs.CANME.all = ECanaShadow.CANME.all;
3.8.3) Установить длину сообщения равной 1 (бит DLC регистра “ECanaMboxes.MBOX5.MSGCTRL”).
4) Присоединение байта данных и отправка.
Теперь надо организовать периодическую загрузку байта данных в mailbox и отправку с помощью цикла while(1). Для этого:
4.1) Из входных портов GPIO-Port B (с 15 по 8 бит) загрузить байт данных в регистр “ECanaMboxes.MBOX5.MDL.byte.BYTE0”.
4.2) Послать запрос передачи mailbox#5. Для этого в регистре “ECanaShadow.CANTRS” установить бит TRS5=1, а все остальные 0. Затем загрузить все это в регистр “ECanaRegs.CANTRS”.
4.3) Как только придет запрос на отправку сообщения, флаг “ECanaRegs.CANTA.bit.TA5” будет установлен в 1.
4.4)Установить бит “ECanaRegs.CANTA.bit.TA5” в исходное состояние:
ECanaShadow.CANTA.all = 0;
ECanaShadow.CANTA.bit.TA5 = 1;
ECanaRegs.CANTA.all = ECanaShadow.CANTA.all;
5) Тестирование программы.
5.1) Сбросить ЦСП: Debug → Reset CPU, Debug → Restart.
5.2) Перейти к главной подпрограмме: Debug → Go main.
5.3) Запустить программу: Debug → Run.