Создать ответ 
 
Рейтинг темы:
  • Голосов: 1 - Средняя оценка: 5
  • 1
  • 2
  • 3
  • 4
  • 5
Katana SDKs
Автор Сообщение
megavolt85 Не на форуме
Супермодератор
******

Сообщений: 3106
Зарегистрирован: 24.03.2012
Рейтинг: 38
Сказал спасибо: 180
Поблагодарили 1526 раз(а) в 898 сообщ.
Сообщение: #41
RE: Katana SDKs
ну в общем как то так

Код:
#define SCIREG(x) *((volatile uint8 *)(x))
#define SCSMR1  SCIREG(0xFFE00000)
#define SCBRR1  SCIREG(0xFFE00004)
#define SCSCR1  SCIREG(0xFFE00008)
#define SCTDR1  SCIREG(0xFFE0000C)
#define SCSSR1  SCIREG(0xFFE00010)
#define SCRDR1  SCIREG(0xFFE00014)
#define SCSPTR1 SCIREG(0xFFE00018)

#define TDRE    0x80
#define RDRF    0x40
#define ORER    0x20

#define STBCR    SCIREG(0xFFC00004)

#define PCTRA    *((volatile uint32 *)(0xFF80002C))
#define PDTRA    *((volatile uint16 *)(0xFF800030))

#define CSIO    (1 << 14)
#define CS(x)    PDTRA = (x == 0) ? (PDTRA | 0x80) : (PDTRA & ~0x80)

void sci_init(int baud_rate)
{
    uint8 scsmr1 = 0x80, scbrr1;
    
    STBCR &= ~1;
    
    SCSCR1 = 0;
    
    if (baud_rate > 100000)
    {
        scbrr1 = (50000000 / (4 * baud_rate)) - 1;
    }
    else if (baud_rate > 15000)
    {
        scbrr1 = (50000000 / (16 * baud_rate)) - 1;
        scsmr1 = 0x81;
    }
    else if (baud_rate > 4000)
    {
        scbrr1 = (50000000 / (64 * baud_rate)) - 1;
        scsmr1 = 0x82;
    }
    else if (baud_rate > 750)
    {
        scbrr1 = (50000000 / (256 * baud_rate)) - 1;
        scsmr1 = 0x83;
    }
    else
    {
        printf("ERROR: speed %d not supported\n", baud_rate);
        return;
    }
    
    SCSMR1 = scscr1;
    SCBRR1 = scbrr1;
    
    for(int i = 0; i < 800000; i++)
        __asm__("nop");
    
    SCSCR1 = 0x30;
    
    PCTRA |= CSIO;
}

int sci_spi_rw(uint8 *in, uint8 *out, uint32 len)
{
    for (uint32 i = 0; i < len; i++)
    {
        CS(1);
        
        while (!(SCSSR1 & TDRE));
        
        SCTDR1 = in[i];
        SCSSR1 &= ~TDRE;
        
        do
        {
            if (SCSSR1 & ORER)
            {
                return -1;
            }
        }
        while (!(SCSSR1 & RDRF));
        
        out[i] = SCRDR1;
        
        SCSSR1 &= ~RDRF;
        
        CS(0);
    }
    
    return 0;
}

проверил на контроллерах PS1 и PS2, работает, правда джой PS2 как то через раз читается, но это скорей всего проблема в неправильной скорости

HKT-3030, Bios mod, SD mod, VGA internal mod, G1ATA mod, Region changer mod, PSU mod
(Последний раз сообщение было отредактировано 27.08.2019 в 21:47, отредактировал пользователь megavolt85.)
27.08.2019 20:49
Найти все сообщения Цитировать это сообщение
Создать ответ 


Сообщения в этой теме
Katana SDKs - SILENT_Pavel - 06.07.2015, 17:49
RE: Katana SDKs - megavolt85 - 06.07.2015, 18:20
RE: Katana SDKs - SILENT_Pavel - 06.07.2015, 18:25
RE: Katana SDKs - megavolt85 - 06.07.2015, 18:29
RE: Katana SDKs - MetalliC - 03.08.2015, 04:45
RE: Katana SDKs - SWAT - 03.08.2015, 09:13
RE: Katana SDKs - alex - 06.07.2015, 18:56
RE: Katana SDKs - SWAT - 07.07.2015, 11:34
RE: Katana SDKs - SILENT_Pavel - 06.07.2015, 19:57
RE: Katana SDKs - megavolt85 - 06.07.2015, 21:00
RE: Katana SDKs - Rio - 19.09.2015, 18:25
RE: Katana SDKs - SWAT - 20.09.2015, 09:19
RE: Katana SDKs - Rio - 20.09.2015, 14:49
RE: Katana SDKs - MetalliC - 29.09.2015, 23:00
RE: Katana SDKs - SWAT - 30.09.2015, 08:12
RE: Katana SDKs - MetalliC - 05.10.2015, 14:58
RE: Katana SDKs - SWAT - 05.10.2015, 16:11
RE: Katana SDKs - Rio - 09.10.2015, 23:32
RE: Katana SDKs - SWAT - 11.10.2015, 08:30
RE: Katana SDKs - SILENT_Pavel - 12.10.2015, 07:20
RE: Katana SDKs - SWAT - 12.10.2015, 08:31
RE: Katana SDKs - SILENT_Pavel - 22.11.2015, 20:33
RE: Katana SDKs - MetalliC - 07.01.2016, 16:28
RE: Katana SDKs - SILENT_Pavel - 19.05.2016, 23:15
RE: Katana SDKs - MetalliC - 20.05.2016, 00:56
RE: Katana SDKs - MetalliC - 21.06.2019, 18:02
RE: Katana SDKs - megavolt85 - 21.06.2019, 18:20
RE: Katana SDKs - SWAT - 22.06.2019, 15:06
RE: Katana SDKs - MetalliC - 23.06.2019, 00:01
RE: Katana SDKs - SWAT - 23.06.2019, 10:14
RE: Katana SDKs - MetalliC - 23.06.2019, 16:25
RE: Katana SDKs - ands - 28.06.2019, 00:08
RE: Katana SDKs - SWAT - 29.06.2019, 09:49
RE: Katana SDKs - MetalliC - 29.06.2019, 15:07
RE: Katana SDKs - SWAT - 30.06.2019, 13:36
RE: Katana SDKs - MetalliC - 11.08.2019, 17:14
RE: Katana SDKs - megavolt85 - 27.08.2019, 02:16
RE: Katana SDKs - MetalliC - 27.08.2019, 04:08
RE: Katana SDKs - megavolt85 - 27.08.2019, 13:14
RE: Katana SDKs - megavolt85 - 27.08.2019, 14:38
RE: Katana SDKs - megavolt85 - 27.08.2019 20:49
RE: Katana SDKs - MetalliC - 30.08.2019, 00:37
RE: Katana SDKs - 111 - 25.01.2020, 02:17
RE: Katana SDKs - megavolt85 - 25.01.2020, 04:19
RE: Katana SDKs - fanhais - 25.01.2020, 06:43
RE: Katana SDKs - 111 - 25.01.2020, 07:03
RE: Katana SDKs - megavolt85 - 25.01.2020, 07:41
RE: Katana SDKs - 111 - 25.01.2020, 09:40
RE: Katana SDKs - megavolt85 - 25.01.2020, 18:57
RE: Katana SDKs - 111 - 26.01.2020, 02:39
RE: Katana SDKs - megavolt85 - 26.01.2020, 03:03
RE: Katana SDKs - 111 - 26.01.2020, 04:26

Похожие темы
Тема: Автор Ответов: Просмотров: Посл. сообщение
  DC SDKs Bigral 135 415092 04.01.2021 13:34
Посл. сообщение: SWAT

Переход:


Пользователи просматривают эту тему: 1 Гость(ей)