Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:1
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Отладочные платы » SK-iMX53
[iMX535] - spi
Kevol
Добавлено 18.02.2013 02:02
0
Сообщение: 1
Kevol
2

Пункты: 209
Регистрация: 18.12.2012
Пол: Мужчина
Попробовал подключить SPI, не получилось и остались одни вопросы.
В документации от Freescale "i.MX53 START Linux Reference Manual, Rev. 1": Chapter 32 Configurable Serial Peripheral Interface (CSPI) Driver, 32.5 Menu Configuration Options утвеждается, что поддерка SPI присутсвует в наличии, достаточно при конфигурации в состав ядра включить SPI_MXC.
При этом должна появиться возможность выбрать выбрать номера интерфейсов (SPI_MXC_SELECTn).
Последнего, естественно в наличии нет.
В документации на SoC упоминаются как CSPI, так и ECSPI.
Это одно и то же?
Далее, при попытке сконфигурировать выводы на разъеме X1, обнаружил, что SPI0 не собрать из-за несоответсвия вывода SPI0_NCS.

Вот полученные мною результаты соответсвия выводов разъема и пинов SoC

SPI0 (X1[37,38,39,40])
EIM_D23 (Y1) SPI0_NCS X1[37] ***
EIM_D18 (V1) SPI0_MOSI X1[39]
EIM_D17 (U5) SPI0_MISO X1[40]
EIM_D16 (U6) SPI0_CLK X1[38]

SPI1 (X1[20,21,22,32])
EIM_LBA (AA6) SPI1_NCS X1[20] ECSPI2_SS1(ALT2)
CSIO_DAT9 (R4) SPI1_MOSI X1[21] ECSPI2_MOSI(ALT3)
CSIO_DAT10 (R5) SPI1_MISO X1[22] ECSPI2_MISO(ALT3)
EIM_CS0 (W8) SPI1_CLK X1[32] ECSPI2_SCLK(ALT2)


После настроек IOMUX, что еще из дополнительных настроек понадобиться для использования через юзерспес CSPI?

Пока никакой прозрачности между определением структур в mx53_loco.c и поялением в конфигурации ядра SPI_MXC_SELECTn не вижу. Буду благодарен, если укажете конкретный пример подобной настройки.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 18.02.2013 09:26 Редактировалось 18.02.2013 09:34 Сообщение: 2
sasamy
4.70

Пункты: 77331
Регистрация: 14.08.2009
Цитата

В документации на SoC упоминаются как CSPI, так и ECSPI.
Это одно и то же?


Это два разных контроллера, драйвер один - разница в ревизии которая задается в структуре в board-файле.
Цитата

static struct mxc_spi_master mxcspi1_data = {
.maxchipselect = 4,
.spi_version = 23, // это ecspi
.chipselect_active = mx53_evk_gpio_spi_chipselect_active,
.chipselect_inactive = mx53_evk_gpio_spi_chipselect_inactive,
};



в остальном про аппаратный spi могу сказать только то что драйвер для него в ядре freescale достаточно кривой, на imxcommunity советуют делать бэкпорт из ванильного ядра.

По поводу несоответствия пинов - возможно Павел думал что роль CS может выполнятьлюбой GPIO, если в пинах несоответствие подобрать что-то подходящее удобней в таблице Table 4-3. Muxing Options sorted by IPs в документе i.MX53 Multimedia Applications Processor Reference Manual
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 14.04.2013 00:24 Сообщение: 3
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Далее, при попытке сконфигурировать выводы на разъеме X1, обнаружил, что SPI0 не собрать из-за несоответсвия вывода SPI0_NCS.

судя по информации утилиты IOMUX похоже, что нет..
подключил флешку на второй канал, прописал в файле платы пины
Код
/* SPI2 */
MX53_PAD_CSI0_DAT10__ECSPI2_MISO,
MX53_PAD_CSI0_DAT9__ECSPI2_MOSI,
MX53_PAD_EIM_CS0__ECSPI2_SCLK,
MX53_PAD_EIM_LBA__ECSPI2_SS1,

структуры
Код
static struct mtd_partition mxc_dataflash_partitions[] = {
{
.name = "userdata",
.offset = 0,
.size = MTDPART_SIZ_FULL,},
};
static struct flash_platform_data mxc_spi_flash_data[] = {
{
.name = "at25df641",
.parts = mxc_dataflash_partitions,
.nr_parts = ARRAY_SIZE(mxc_dataflash_partitions),
.type = "at25df641",}
};
static struct spi_board_info mxc_dataflash_device[] __initdata = {
{
.modalias = "at25df641",
.max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
.bus_num = 2,
.chip_select = 1,
.platform_data = &mxc_spi_flash_data[0],},
};

static struct mxc_spi_master mxcspi2_data = {
.maxchipselect = 4,
.spi_version = 23,
};

и вызовы
Код
mxc_register_device(&mxcspi2_device, &mxcspi2_data);
printk("** spi register board\n");
spi_register_board_info(mxc_dataflash_device,
ARRAY_SIZE(mxc_dataflash_device));

в логе
Код
[ 0.773815] ** spi register board
[ 0.777141] ** spi_reg_board_info
[ 0.780463] ** spi_reg_board_info fine
[ 0.786297] Using SDMA I.API
[ 0.789310] MXC DMA API initialized
[ 0.793150] IMX usb wakeup probe
[ 0.796521] IMX usb wakeup probe
[ 0.808806] bio: create slab <bio-0> at 0
[ 0.813799] SCSI subsystem initialized
[ 0.817985] ** spi_reg_master
[ 0.821215] ** spi_reg_master fine
[ 0.824626] CSPI: mxc_spi-1 probed

[ 1.289292] m25p80 spi2.1: at25df641 (8192 Kbytes)

как mtd видится в девайсах..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » SK-iMX53