My guess is something is telling it to stop cranking? I don't know what all is involved in that but I'd assume the ecu reads the crank sensor rpm and decides to kill starter power at xx rpm, like 300? Just a guess but I suppose I'd try to see if there are any codes telling of some stupid failed part that may cause that to read wrong.
If all fails I'd just put a little push button on the dash that bypasses whatever bs and just cranks it. My truck is like that, which I did for different reasons but the starter is a little teeny push button and next to it is a teeny toggle switch for the ignition. Then teeny toggles for cooling fans, fuel pump etc. Old school and no electrical problems
