|
|
使用下面的例子代码,不能使SIMO和CS为低电平:6 { G: O$ B K! p
void PSCInit(void)
# |0 x, x% q. g# H9 |7 B{
9 A5 X% }( z$ d" Q9 B4 y8 H PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
2 H' m3 A+ E! H) |6 g; r) T}
2 M& x3 q9 T6 Z( p
6 l3 x- {6 Q! `2 j, Jvoid GPIOBankPinMuxSet(void)
- `0 k+ q( W$ G+ c; d7 E{% q! F+ ]4 T4 I
// DRDY ------------ GPIO6[14] -- 111
. T6 |. P% y8 v9 w4 @$ Z // SPI1_CLK ------------ GPIO2[13] -- 466 ]/ C: M; p9 X9 H
// SPI1_SOMI------------ GPIO2[11] -- 44
7 f; X+ a! f- h: @1 p7 r" G" p // SPI1_SIMO------------ GPIO2[10] -- 43
6 k& U; g) c& b7 s' M6 ?8 T8 D' ~ // SPI1_CS2 ------------ GPIO1[0] -- 17
) H( H: i& a4 u1 ~( d% K // SPI1_CS3 ------------ GPIO1[1] -- 18
7 h1 R" l H Z% N! E6 B* R+ [1 O
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);) `# |2 n/ d. F* |5 D8 M
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);* }1 G/ X$ f0 l# g6 K0 k: v: u
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);8 M0 \- @/ Z& O" @" Z; A1 m1 u
; [, |/ ]& O0 p //DRDY0 U0 S0 b) @+ @# t5 n; `
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY# i/ C! w1 Z4 A1 [
// CS2,CS3, U7 r$ `# G# _1 T' P
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
|7 h4 x' ?: L! y: H GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3$ s: a" d4 c- @( F+ e w2 u
//SIMO" n$ r5 T% `( M1 c6 A/ o+ n' Q
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
% O/ I8 U. {$ g: b" Y //SOMI
5 e( f2 B( Z$ l! [ GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
7 w. m* t* @: ?# `& n3 J- A U6 S+ ? //CLK; u7 H& @1 M0 G, j5 o! P4 O
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
; n- _5 s! m; E' q' ~$ Y9 P4 a9 y% I/ x* p% E
// LDAC
( X p2 `5 G' Z9 V# w9 j2 q GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK3 @( S( ~* M! F( L/ k; C: r1 [
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN0 e5 G' s; q2 Y; L7 X
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
' q; t) E* k5 x4 D6 Q GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3: t& I. y# P$ Y9 V3 f
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY* v5 j" s* A) b/ X2 J/ \) T. ]
}
. }* D3 @2 M: ?- q5 T
4 `/ j7 i7 H6 Z2 p4 {# `" R' m4 |. qint main(void)+ o, B, p4 ?8 N) k* |* a' m
{
5 B9 b# r4 E* J0 D // 外设使能
- P# q8 ?, m1 Y# S* f PSCInit();- z9 D' z, h( N7 F7 a
4 Z0 t4 G) ]* e, n8 q# x
* G) X! t' Z7 W' v9 C' A- n
// 管脚复用配置 h$ |4 U& h* l1 p- i5 H6 U' ~3 Q
GPIOBankPinMuxSet();6 p+ n0 q2 m. Y" b0 R
for(;;)
/ Q5 c, C' J/ w/ b {
+ M1 D& ?8 U" E3 r SET_SCLK();//时钟正常输出+ P8 }. F v B
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS21 Z3 k7 E; M3 \" x: H3 J
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
; Q1 d1 L, C; {( G+ ~0 G GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
9 d- G4 O. F7 _* e+ g4 h
$ N0 T5 F4 C# C1 y; t delay(20);
6 [5 c8 J' q* e! F4 Q CLR_SCLK();3 O9 ~ U' ~4 s6 ]
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
2 `6 [* r' y1 `% A% u! A! B GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
$ N3 T3 f) v5 J, q$ h/ Y GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
, _( z1 m9 a3 ~* T delay(20);
3 O0 b# U7 h$ b9 Y$ x. _ }9 ^4 {2 [ K5 b0 u) o" l
}
N' y* Y4 h+ k/ |6 e. N5 p |
|